在课堂上,有一种情况:
@interface classA: NSObject
@property (readonly, nonatomic, strong) NSString *testString;
@end
@interface classA()
@property (readwrite, nonatomic, strong) NSString *testString;
@end
@implementation classA
@end
有什么好处?为什么这样?
答案 0 :(得分:2)
这是一种非常常见的模式。
包括您班级标题文件在内的任何人都会看到“只读”。这意味着他们可以阅读该物业,但他们无法写信给它。对于您不希望任何随机位代码更改的任何属性,这就是您想要的。
在您的实现中,您会看到“readwrite”。因此,在您的类的实现中,您可以写入它。但是,只有你可以写入属性,其他类中的任何人都可以。
答案 1 :(得分:0)
就是这样,因为程序员不希望这个类的用户修改属性testString
,同时又想自己修改它。
例如,description
的属性NSObject
也是只读的。
如果您不想覆盖getter,可以使用此模式,而是在实例状态发生变化时为您的属性分配新值。