objective-c为什么相同的属性但属性不同

时间:2015-04-15 08:46:35

标签: objective-c properties readonly

在课堂上,有一种情况:

@interface classA: NSObject
@property (readonly, nonatomic, strong) NSString *testString;
@end

@interface classA()
@property (readwrite, nonatomic, strong) NSString *testString;
@end
@implementation classA
@end

有什么好处?为什么这样?

2 个答案:

答案 0 :(得分:2)

这是一种非常常见的模式。

包括您班级标题文件在内的任何人都会看到“只读”。这意味着他们可以阅读该物业,但他们无法写信给它。对于您不希望任何随机位代码更改的任何属性,这就是您想要的。

在您的实现中,您会看到“readwrite”。因此,在您的类的实现中,您可以写入它。但是,只有可以写入属性,其他类中的任何人都可以。

答案 1 :(得分:0)

就是这样,因为程序员不希望这个类的用户修改属性testString,同时又想自己修改它。

例如,description的属性NSObject也是只读的。

如果您不想覆盖getter,可以使用此模式,而是在实例状态发生变化时为您的属性分配新值。