我已经在我的界面中声明了一个只读属性:
@property (readonly, nonatomic, copy) NSString* eventDomain;
也许我对属性有误解,但我认为当您将其声明为readonly
时,您可以在实现(.m
)文件中使用生成的setter ,但外部实体无法更改该值。 This SO question说这就是应该发生的事情。这就是我所追求的行为。但是,当尝试使用标准 setter 或点语法在我的 init 方法中设置 eventDomain
时,它会给我一个 unrecognized selector sent to instance.
错误。当然,我是在 @synthesize
ing 属性。尝试像这样使用它:
// inside one of my init methods
[self setEventDomain:@"someString"]; // unrecognized selector sent to instance error
那么我误解了属性上的 readonly
声明吗?还是发生了其他事情?
最佳答案
您需要告诉编译器您还需要一个 setter。一种常见的方法是将其放入 class extension在 .m 文件中:
@interface YourClass ()
@property (nonatomic, copy) NSString* eventDomain;
@end
关于objective-c - Objective-C 中的只读属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4586516/