Gre*_*reg 2 initialization properties objective-c conceptual
我知道这可能不一定适用于@properties,但它们将是最常见的用例.如果有,例如:
@property (strong) NSObject *object;
...
@synthesize object = _object;
Run Code Online (Sandbox Code Playgroud)
可以在init声明它的类的方法中初始化它,如下所示:
- (id)init {
self = [super init];
if (self) {
_object = [[NSObject alloc] init];
}
}
Run Code Online (Sandbox Code Playgroud)
或覆盖getter并在首次使用时初始化它:
- (NSObject *)object {
if (!_object) {
_object = [[NSObject alloc] init];
}
return _object;
}
Run Code Online (Sandbox Code Playgroud)
哪个更好用?这是否取决于使用场景(例如,声明属性的对象是否具有多个初始化器,或属性的类型,如何使用它等)?
我在覆盖getter时看到的真正优势是,只有在需要时才会分配属性,但缺点是第一次访问会更慢.
在一个侧面说明,在访问属性时init的方法,是能够更好地访问它们作为self.object或_object?
| 归档时间: |
|
| 查看次数: |
4435 次 |
| 最近记录: |