OC category如何注入新的属性(property)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OC category如何注入新的属性(property)相关的知识,希望对你有一定的参考价值。
利用OC Runtime
在.h中
@interface NSObject (LaserUnicorn) @property (nonatomic, strong) LaserUnicorn *laserUnicorn; @end
在.m中
#import <objc/runtime.h> static void * LaserUnicornPropertyKey = &LaserUnicornPropertyKey; @implementation NSObject (LaserUnicorn) - (LaserUnicorn *)laserUnicorn { return objc_getAssociatedObject(self, LaserUnicornPropertyKey); } - (void)setLaserUnicorn:(LaserUnicorn *)unicorn { objc_setAssociatedObject(self, LaserUnicornPropertyKey, unicorn, OBJC_ASSOCIATION_RETAIN_NONATOMIC); } @end
更简洁的方式,试用@selector(nameOfGetter)
- (LaserUnicorn *)laserUnicorn { return objc_getAssociatedObject(self, @selector(laserUnicorn)); } - (void)setLaserUnicorn:(LaserUnicorn *)unicorn { objc_setAssociatedObject(self, @selector(laserUnicorn), unicorn, OBJC_ASSOCIATION_RETAIN_NONATOMIC); }
以上是关于OC category如何注入新的属性(property)的主要内容,如果未能解决你的问题,请参考以下文章
OC底层Category+load方法+initialize方法原理