Runtime 关联对象的使用

现在你准备用一个系统的类,但是系统的类并不能满足你的需求,你需要额外添加一个属性。这个时候,runtime的关联属性就发挥它的作用了。其实,你还可以把添加和获取关联对象的方法写在你需要用到这个功能的类的类别中,方便使用。

首先,引入头文件 #import<objc / runtime.h>

其次,重写getter & setter 方法


 #import<objc / runtime.h>

@implementation UIImageView (WebCache)

- (void)setCurrentUrl: (NSSting *)currentUrl {

//运行时机制来存储数据

参数的介绍:1)要被关联的对象

                      2)要被关联的key

                      3) 要被关联的value

                      4) 策略即内存的引用关系

有以下几种策略

enum {    OBJC_ASSOCIATION_ASSIGN = 0,  

              OBJC_ASSOCIATION_RETAIN_NONATOMIC = 1,    

              OBJC_ASSOCIATION_COPY_NONATOMIC = 3,   

              OBJC_ASSOCIATION_RETAIN = 01401,    

              OBJC_ASSOCIATION_COPY = 01403 };

}

objc_setAssociatedObject(self,"abc",cuurentUrl,OBJC_ASSOCIATION_COPY);

}


- (NSSting *)cuurentUrl {

//取出cuurentUrl

参数:1)要被关联的对象

           2)要被关联的key

return objc_getAssociatedObject(self,"abc");

}


你可能感兴趣的:(Runtime 关联对象的使用)