我喜欢readwrite属性的一件事是,你可以“免费”获得KVO遵从性,所以我倾向于在属性上使用它,即使它们只在属性所属的对象中写入。另一方面,我理解只有当一个属性被其他对象写入时,它才应该被设置为readwrite。那么,我是否应该使用readwrite,即使我只从self调用setter:
[self setFoo:bar];另一种选择(我认为)是使用:
[self willChangeValueForKey:@"foo"];
foo = bar;
[self didChangeValueForKey:@"foo"];这是额外的两行代码,每当我想要更改foo时,我都必须编写代码。哪种更好些呢?
发布于 2011-07-05 00:39:06
您可以在公共接口中声明属性readonly,然后在实现文件的类扩展中将其提升为readwrite。
Foo.h:
@interface Foo: NSObject
@property (readonly) NSString *frob;
@endFoo.m:
@interface Foo ()
@property (readwrite) NSString *frob;
@end
@implementation Foo
@synthesize frob;
// Methods in Foo.m can now use foo.frob = @"whatever";
@end发布于 2011-07-04 22:47:13
在.h中
@property(nonatomic,readwrite,retain)NSString *foo;然后
在.m中
@synthesize foo;然后在任何地方使用,比如
self.foo=@"madhu";或
self.foo=@"mike";但是如果你像上面那样合成,那么你必须总是使用like
带点的self
每次更改字符串时
it will automatically release the older object then retain the new one.so no pain to take care of old one for release and no pain for retain the new one.我觉得这样更好
https://stackoverflow.com/questions/6572907
复制相似问题