我知道这可能不一定只适用于@properties,但它们将是最常见的用例。如果有,例如:
@property (strong) NSObject *object;
...
@synthesize object = _object;
init
可以在声明它的类的方法中对其进行初始化,如下所示:
- (id)init {
self = [super init];
if (self) {
_object = [[NSObject alloc] init];
}
}
或覆盖 getter 并在首次使用时对其进行初始化:
- (NSObject *)object {
if (!_object) {
_object = [[NSObject alloc] init];
}
return _object;
}
这些哪个更好用?这是否取决于使用场景(例如,声明属性的对象是否有多个初始化器,或者属性的类型,它的使用方式等)?
我在重写 getter 时看到的真正优势是该属性只会在需要时分配,但缺点是第一次访问会更慢。
附带说明一下,当访问方法中的属性时,以或init
访问它们更好吗?self.object
_object