我在接口中声明了一个只读属性,如下所示:
@property (readonly, nonatomic, copy) NSString* eventDomain;
也许我对属性的理解有误,但我认为当你将其声明为readonly
时,你可以在实现(.m
)文件内使用生成的setter,但外部实体无法更改该值。这个SO问题说应该是这样的行为。这就是我想要的行为。然而,在尝试在我的init方法内使用标准的setter或点语法设置eventDomain
时,它会给出一个unrecognized selector sent to instance.
错误。当然,我已经用@synthesize
合成了属性。我尝试像这样使用它:
// inside one of my init methods
[self setEventDomain:@"someString"]; // unrecognized selector sent to instance error
那么,我是否误解了属性上的readonly
声明?还是有其他事情发生了?
.h
中的初始声明?否则,我不知道如何公开一个 setter。谢谢。 - Madbreaks