如今你准备用一个系统的类,可是系统的类并不能知足你的需求,你须要额外添加一个属性。这个时候,runtime的关联属性就发挥它的做用了。其实,你还能够把添加和获取关联对象的方法写在你须要用到这个功能的类的类别中,方便使用。web
首先,引入头文件 #import<objc / runtime.h>spa
其次,重写getter & setter 方法orm
#import<objc / runtime.h>对象
@implementation UIImageView (WebCache)内存
- (void)setCurrentUrl: (NSSting *)currentUrl {ci
//运行时机制来存储数据get
参数的介绍:1)要被关联的对象it
2)要被关联的keyio
3) 要被关联的valueimport
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");
}