我知道這可能不一定只適用於@properties,但它們將是最常見的用例。如果有,例如:初始化Objective-C屬性的最佳實踐
@property (strong) NSObject *object;
...
@synthesize object = _object;
是可能的初始化它的類的init
方法聲明它在像這樣:
- (id)init {
self = [super init];
if (self) {
_object = [[NSObject alloc] init];
}
}
或覆蓋吸氣劑和初始化它在第一使用方法:
- (NSObject *)object {
if (!_object) {
_object = [[NSObject alloc] init];
}
return _object;
}
哪個更好用?這是否取決於使用場景(例如,聲明屬性的對象是否具有多個初始值,屬性的類型,使用方式等)?
我在重寫getter時看到的真正優點是隻有在需要時纔會分配該屬性,但缺點是第一次訪問會更慢。
請注意,在訪問init
方法中的屬性時,最好是將它們作爲self.object
還是_object
訪問?
確保在開始設置屬性前使用init方法中的if(self){' – lnafziger
糟糕。修復。感謝您的注意。 我不會在Xcode中錯過它,它只是不是我在這裏討論的內容的一部分,所以我在盯着純文本字段時忘了它。 – Greg