ios - 依旧是category问题
ringa_lee
ringa_lee 2017-04-17 18:01:22
[iOS讨论组]

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

ringa_lee
ringa_lee

ringa_lee

全部回复(3)
PHP中文网

你已经理解了前半句话,对于后半句,写几行代码验证如下:
原有类,用字典保存了参数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;
}
天蓬老师

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

PHP中文网

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号