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(示例代

mybatis 关联查询 association

Association Rules 关联规则

UML的关联(Association), 聚合(Aggregation), 组合(Composition)区别

mybatis 一对一关联 association 返回空值

MyBatis关联查询 (association) 时遇到的某些问题/mybatis映射