我正在使用键控归档,发现我的某些对象需要具有通用标识符。我正在考虑为此目的引入UDID。
我可以创建一个这样的自定义类,并让我的对象从中继承,但这意味着udid的多个实现。我只想要一个。
@interface NSObjectWithUDID : NSObject
@property(nonatomic,strong,readonly)NSString* udid;
@end
我的问题是:如何在不继承NSObjectWithUDID子类的情况下为我的班级添加响应[udid]消息的功能?
我尝试了类别,但不确定是否可以在此处使用属性。
最佳答案
没错,您不能在类别中添加属性,但是可以使用objc运行时方法进行运行时设置
#import <objc/runtime.h>
static char udidKey;
@implementation NSObject (UDIDAddition)
- (NSString *)udid {
return objc_getAssociatedObject(self, &udidKey);
}
- (void)setUdid:(NSString *)udid {
objc_setAssociatedObject(self, &udidKey, udid, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
@end