objective-c - Objective-C 中的只读属性?

标签 objective-c properties readonly

我已经在我的界面中声明了一个只读属性:

 @property (readonly, nonatomic, copy) NSString* eventDomain;

也许我对属性有误解,但我认为当您将其声明为readonly时,您可以在实现(.m)文件中使用生成的setter ,但外部实体无法更改该值。 This SO question说这就是应该发生的事情。这就是我所追求的行为。但是,当尝试使用标准 setter 或点语法在我的 init 方法中设置 eventDomain 时,它会给我一个 unrecognized selector sent to instance. 错误。当然,我是在 @synthesizeing 属性。尝试像这样使用它:

 // 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/

相关文章:

iphone - 在自定义 UITableViewCell 中添加 View 的最佳方法

javascript - 替换 JavaScript 文件中的 Maven Archetype 属性

Android 根应用程序不工作 : Can't remove file from terminal or Java

c# - 为什么我不能在初始化程序中初始化只读变量?

ios - 如何使用 ELCImagePickerController 检查所选视频的大小

iOS NSNotificationCenter 观察者未被删除

iphone - Objective-C for iPhone - 使用简单的日期命令时应用程序崩溃

ms-access - 在 MS-Access 中以编程方式隐藏列

iphone - 如何从另一个类访问我的 ViewController 的属性变量?

java - @ManyToOne(updatable=false) - 它应该如何工作?