依旧是category问题

发布于 2022-09-02 15:55:25 字数 68 浏览 20 评论 0

博客上说:category无法添加实例变量的局限可以使用字典对象解决请问这句话如何理解?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

好听的两个字的网名 2022-09-09 15:55:25

你已经理解了前半句话,对于后半句,写几行代码验证如下:
原有类,用字典保存了参数name和age:

@interface XObj : NSObject
@property(nonatomic,retain) NSMutableDictionary *parms;
-(void) printPerson;
@end

@implementation XObj
@synthesize parms;
-(void)printPerson
{
    NSLog(@"[XObj] name = %@",[parms objectForKey:@"name"]);
}
@end

现在需要加入参数country,扩展方法printCountry(),因为category不能加实例变量,所以:

@implementation XObj(Utility)
-(void)printCountry
{
    NSLog(@"[XObj Utility] Country=%@",[self.parms objectForKey:@"Country"]);
}

实际使用时,可以这样做:

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        [NSStringUtility logURLAddress:@"http://www.baidu.com"];
        XObj *xo=[[XObj alloc]init];
        NSMutableDictionary *dict=[[NSMutableDictionary alloc]initWithObjectsAndKeys:@"A",@"name",@"18",@"age", nil];
        xo.parms = dict;
        [xo printPerson];
        [xo.parms setObject:@"China" forKey:@"Country"];
        [xo printCountry];
    }
    return 0;
}
苹果你个爱泡泡 2022-09-09 15:55:25

category可以添加实例变量,使用AssociatedObject

纸短情长 2022-09-09 15:55:25

至少你要把上下文贴出来。。。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文