我正在使用键控归档,发现我的某些对象需要具有通用标识符。我正在考虑为此目的引入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

10-08 05:51
查看更多