Я понимаю, что это может не относиться только к свойствам @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;
}
Какой из них лучше использовать? Это зависит от сценария использования (например, имеет ли объект, объявленный в нем свойство, несколько инициализаторов или тип свойства, способ его использования и т. Д.)?
Реальное преимущество, которое я вижу в переопределении получателя, заключается в том, что свойство будет выделено только тогда, когда оно необходимо, но недостатком будет то, что первый доступ будет медленнее.
На боковой ноте, при доступе к свойствам в методе init
, лучше ли их получить как self.object
или _object
?
Обязательно используйте 'if (self) {' в методе init до того, как вы начнете настройку свойств .... – lnafziger
К сожалению. Починил это. Спасибо, что заметили. Я не пропустил это в Xcode, это просто не было частью того, о чем я говорил здесь, поэтому я забыл его здесь, глядя на текстовое поле. – Greg