objective-c - 覆盖 getter 只需要 @synthesize

标签 objective-c xcode5 getter-setter synthesize

我想为惰性实例化改写 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/

相关文章:

Java Setters 和 Getters 将数据存入 Java 数据库

ios - SpriteKit : how to turn touches into vectors of uniform speed?

objective-c - 字谜算法 Objective-C

ios - xCode 不允许添加对象

iphone - 从现有 iPhone 应用程序创建通用应用程序

javascript - 覆盖setter,并且getter也必须被覆盖

c++ - Objective-C,CoreAudio : Possible reasons for which played sound has additional noise, 嘶嘶声和爆裂声?

ios - 使用动画将 uitableview 单元移动到顶部

ios - mapView 区域纬度和经度增量减少每次搜索

javascript - ( typescript )不在类实例的子属性上调用 Setter