runtime - associated(关联)
Posted 小屁孩~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了runtime - associated(关联)相关的知识,希望对你有一定的参考价值。
category和associative作为objective-c的扩展机制的两个特性,category用来扩展类的方法,associative可以用来扩展类的属性。使用associative需要导入<objc/runtime.h>文件。
他有三个方法
1.设置关联对象 objc_setAssociatedObject
OBJC_EXPORT void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy)
参数:object:源对象
key:关键字
value:关联对象
policy:关联侧率
2.获取关联对象 objc_getAssociatedObject
OBJC_EXPORT id objc_getAssociatedObject(id object, const void *key)
参数:object:源对象
key:关键字
3.断开关联 objc_removeAssociatedObjects
OBJC_EXPORT void objc_removeAssociatedObjects(id object)
参数:object:源对象
该方法会断开所有的关联,只有在需要把对象恢复到原始状态的时候才会使用这个函数。
下面以SDWebImage中的方法作为参考例子:
static char imageURLKey; @implementation UIImageView (WebCache) 设置关联: - (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options progress:(SDWebImageDownloaderProgressBlock)progressBlock completed:(SDWebImageCompletionBlock)completedBlock { //设置关联 objc_setAssociatedObject(self, &imageURLKey, url, OBJC_ASSOCIATION_RETAIN_NONATOMIC); } //获取关联对象 - (NSURL *)sd_imageURL { return objc_getAssociatedObject(self, &imageURLKey); }
以上是关于runtime - associated(关联)的主要内容,如果未能解决你的问题,请参考以下文章
文献导读 - Machine Learning Identifies Stemness Features Associated with Oncogenic Dedifferentiation(示例代
UML的关联(Association), 聚合(Aggregation), 组合(Composition)区别