我正在使用以下代码向NSObject添加displayValue
方法:
@interface NSObject (MyNSObjectAdditions)
- (NSString*)displayValue;
@end
@implementation NSObject (MyNSObjectAdditions)
- (NSString*)displayValue {
return self.description;
}
@end
这很好用,但实际上我宁愿将displayValue作为只读属性而不是方法。
如果可能的话,将displayValue
转换为属性而不是选择器的正确语法是什么?
答案 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添加任何内容。你为什么要这样做?