码迷,mamicode.com
首页 > 其他好文 > 详细

objective c, category 和 protocol 中添加property

时间:2016-02-21 01:31:08      阅读:262      评论:0      收藏:0      [点我收藏+]

标签:

property的本质是实例变量 + getter 和 setter 方法

category和protocol可以添加方法

category 和 protocol中可以添加@property 关键字

所以,在protocol中添加property时,其实就是添加了 getter 和 setter 方法,在实现这个protocol的类中,我们要自己手动添加实例变量

例: @synthesize name = _name; //此行代码即添加了实例变量及实现了protocol中属性的getter、setter方法

 

在category中添加property时, 在@implentation添加 getter 和 setter方法时, 由于category不能添加实例变量,故必须通过运行时添加associated object的方法来添加实例变量

例:

#import "UIImage+category.h"

static const void *tagKey = &tagKey;

@implementation UIImage (category)

- (NSString *)tag {
    return objc_getAssociatedObject(self, tagKey);
}

- (void)setTag:(NSString *)tag {
    objc_setAssociatedObject(self, tagKey, tag, OBJC_ASSOCIATION_COPY_NONATOMIC);
}
@end

http://www.jianshu.com/p/00f84e05be49 

objective c, category 和 protocol 中添加property

标签:

原文地址:http://www.cnblogs.com/yibinpan/p/5204332.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!