如何在Objective-C中向NSObject添加属性?

时间:2010-02-11 21:22:00

标签: objective-c

我正在使用以下代码向NSObject添加displayValue方法:

@interface NSObject (MyNSObjectAdditions)
- (NSString*)displayValue;
@end


@implementation NSObject (MyNSObjectAdditions)
- (NSString*)displayValue {
    return self.description;
}
@end

这很好用,但实际上我宁愿将displayValue作为只读属性而不是方法。

如果可能的话,将displayValue转换为属性而不是选择器的正确语法是什么?

3 个答案:

答案 0 :(得分:4)

您只能使用类别向类中添加新方法。如果你真的想要添加新的实例变量,你必须继承NSObject。

在任何情况下,向NSObject添加功能都不是一个好主意。你能解释一下你想要达到的目标吗?

答案 1 :(得分:3)

您可以在类别中拥有属性。在非class extensions(AKA类连续)的类别中,您不能使用@synthesize。但是,编写支持方法很简单。在您的情况下,这有效:

@interface NSObject (MyNSObjectAdditions)
@property (readonly) NSString *displayValue;
@end

@implementation NSObject (MyNSObjectAdditions)

- (NSString *)displayValue {
    return self.description;
}

@end

答案 2 :(得分:2)

看起来您的-displayValue方法不会向-description添加任何内容。你为什么要这样做?