Должны ли мы объявить свойства 'ivars' или позволить компилятору сделать это за нас? Как насчет слабых свойств? - PullRequest
0 голосов
/ 08 ноября 2011

Я хотел бы понять, есть ли какое-либо преимущество в объявлении свойств ivars вместо того, чтобы позволить компилятору сделать это за нас, учитывая только создание кода для IOS5 ... Я думаю, что лучше всего не объявлять их, в противном случае вы должны помнить о таких вещах, как объявление ivars как __weak, если соответствующее свойство объявлено как слабое ... это необходимо сделать, верно? В противном случае слабое свойство по умолчанию присваивается сильному ивару, и оно более не является слабым ...

1 Ответ

2 голосов
/ 09 ноября 2011

Обычно я не объявляю ivar, и пусть это делается через @property. Однако в операторе @synthesize я указываю имя ивара для использования в реализации:

@interface MyClass
@property (weak) NSString* myString;
@end

@implementation MyClass
@synthesize myString = _myString;
@end

= _myString в приведенном выше операторе @synthesize совершенно необязателен, но он помогает провести различие между доступом к ivar непосредственно в вашем коде и попыткой использовать методы доступа к свойствам, потому что для непосредственного использования ivar необходимо ввести это с подчеркиванием. Например, вы получите предупреждение, если будете лениться и попытаться выполнить myString=@"xyz", поэтому у вас будет напоминание, чтобы подумать, хотите ли вы использовать self.myString или _myString. Если у вас было @synthesize myString без указания другого имени ivar, в этом случае вы не получите предупреждение компилятора. Что может быть проблемой, если вы внедрили пользовательский метод установки.

И это похоже на более чистый способ объявления иваров; вам не нужно указывать модификатор __weak в этом случае, например, это подразумевается, если вы используете этот синтаксис.

...