objc_setAssociatedObject 关联对象
使用场景:在分类中,不允许创建实例变量,这里就解决了此问题 参考: https://www.cnblogs.com/someonelikeyou/p/7162613.html 属性的实质:就是实例变量+set+get 方法 协议和分类中只会生成setter和getter的声明,如果要实现,还得借助runtime: void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy); id objc_getAssociatedObject(id object, const void *key); void objc_removeAssociatedObjects(id object); key:要保证全局唯一,key与关联的对象是一一对应关系。必须全局唯一。通常用@selector(methodName)作为key。 另外也可以用_cmd表示取当前方法 另外用自定义key也行 static const char Key; value:要关联的对象。 policy:关联策略。有五种关联策略。 OBJC_ASSOCIATION_ASSIGN 等价于 @property(assign)。 OBJC_ASSOCIATION_RETAIN_NONATOMIC等价于 @property(strong, nonatomic)。 OBJC_ASSOCIATION_COPY_NONATOMIC等价于@property(copy, nonatomic)。 OBJC_ASSOCIATION_RETAIN等价于@property(strong,atomic)。 OBJC_ASSOCIATION_COPY等价于@property(copy, atomic)。 不需要做任何释放对象的事
此文仅为鄙人学习笔记之用,朋友你来了,如有不明白或者建议又或者想给我指点一二,请私信我。liuw_flexi@163.com/QQ群:582039935.
我的gitHub: (学习代码都在gitHub)
https://github.com/nwgdegitHub/