懒惰的初始化不能正常工作iPhone

时间:2012-07-09 00:41:06

标签: objective-c lazy-loading lazy-initialization

所以我有很多可以包含大量数据的自定义对象,或者根据用户输入的数据非常少。如果只需要一点点,我显然不想为大量数据创建存储空间。所以我听说初始化,听起来就像我想要的那样;我无法让它发挥作用。以下是我尝试之一的示例:

@synthesize name;

...

- (NSString *)name {
    if (!name) name = [[NSString alloc] init];
    return name;
}

然后在其他地方

myObject.name = localName;

如果我的初始化程序中有allocinit myObject的名称,那么这样可以正常工作。但是,当我尝试上述延迟初始化时,对象的名称在尝试设置后变为nil。我做错了什么?

1 个答案:

答案 0 :(得分:3)

@property (strong) NSString *name;

@synthesize name = _name;

- (NSString *)name {
    if (!_name) {
        _name = [[NSString alloc] init];
        ...
    }
    return _name;
}