我想为惰性实例化改写 getter 并保留默认 setter。
我需要@synthesize吗?
为什么?
@interface Foo()
@property (strong, nonatomic) NSObject *bar;
@end
@implementation Foo
- (NSObject *)bar
{
if(!_bar) _bar = [[NSObject alloc] init];
return _bar;
}
@end
更新:我更改了变量名和类名,因为它令人困惑。从 Deck 和 card 到 Foo 和 bar。
最佳答案
不,如果您显式实现所有访问器方法(readwrite
属性的 getter 和 setter,只是 的 getter,则只需要显式合成(以获得合成的 ivar)只读
属性)。您已经为这个 readwrite
属性编写了 getter,但没有编写 setter,因此仍然会为您合成 ivar。因此,就您的代码而言,您不需要显式地 @synthesize
。
如果您将此属性设置为只读
,那么实现一个 getter 将阻止您的 ivar 被自动合成。同样,由于这是 readwrite
,如果您同时实现了 getter 和 setter,则需要您合成 ivar(如果需要的话)。
关于objective-c - 覆盖 getter 只需要 @synthesize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20522624/