Мой вопрос похож на дюжину вопросов об освобождении свойств, но я не могу найти точный ответ, который ищу.
Когда объект объявлен с сохранением:
@property (nonatomic, retain) NSString * myString;
тогда
@synthesize myString;
Генерирует геттеры и сеттеры с операциями удержания и высвобождения. Хорошо.
Конечно, собственность должна быть освобождена в dealloc.
-(void)dealloc {
[myString release];
myString = nil;
[super dealloc];
}
Так что это чисто.
Но что, если я никогда не использую myString? Это предварительно инициализировано? Мое мнение, что число сохранения myString будет равно 0. Но выпуск myString в dealloc уменьшит его и приведет к аварийному завершению приложения? Но это не сбой!
Является ли более чистый способ выпустить его как?
if(myString != nil) {
[myString release];
myString = nil;
}