美文网首页
使用runtime给分类添加属性

使用runtime给分类添加属性

作者: William__Lu | 来源:发表于2018-08-31 14:47 被阅读0次
使用runtime给分类添加属性
OBJC_EXPORT void
objc_setAssociatedObject(id _Nonnull object, const void * _Nonnull key,
                     id _Nullable value, objc_AssociationPolicy policy)
OBJC_AVAILABLE(10.6, 3.1, 9.0, 1.0, 2.0);

OBJC_EXPORT id _Nullable
objc_getAssociatedObject(id _Nonnull object, const void * _Nonnull key)
OBJC_AVAILABLE(10.6, 3.1, 9.0, 1.0, 2.0);

objc_setAssociatedObject这四个后面的参数分别表示:源对象,关键字,关联的对象和一个关联策略。
关键策略是一个枚举值。
OBJC_ASSOCIATION_ASSIGN = 0, <指定一个弱引用关联的对象>
OBJC_ASSOCIATION_RETAIN_NONATOMIC = 1, <指定一个强引用关联的对象>
OBJC_ASSOCIATION_COPY_NONATOMIC = 3, <指定相关的对象复制>
OBJC_ASSOCIATION_RETAIN = 01401, <指定强参考>
OBJC_ASSOCIATION_COPY = 01403 <指定相关的对象复制>

例如:给分类添加一个NSString类型的属性
- (void)setImgSaveURL:(NSString *)imgSaveURL {
objc_setAssociatedObject(self, @selector(imgSaveURL), imgSaveURL, OBJC_ASSOCIATION_COPY_NONATOMIC);
}

- (NSString *)imgSaveURL {
return (NSString *)objc_getAssociatedObject(self, _cmd);
}

相关文章

网友评论

      本文标题:使用runtime给分类添加属性

      本文链接:https://www.haomeiwen.com/subject/shwswftx.html