Освобождение свойства с помощью self.property - Ошибки анализатора

У меня есть UIViewController со свойством

@property (nonatomic, retain) NSMutableArray *speakerFetchResults;

Затем я устанавливаю свойство в viewWillAppear с помощью

 self.speakerFetchResults = [[[self.speakerViewContext executeFetchRequest:request error:&error] mutableCopy] autorelease];

и хотите снова выпустить его в методе Dealloc UIViewController с помощью

[self.speakerFetchResults release];

Но если я проанализирую свой файл, я получу [выпуск self.speakerFetchResults]; следующее предупреждение:

Неправильное уменьшение счетчика ссылок на объект, который в данный момент не принадлежит вызывающей стороне.

Кроме того (я проверил это) я получаю это сообщение на всех

[самостоятельный релиз]

вопросы.

Поэтому я немного запутался и удаляю все «я». в этих релизах или вообще вызывают много ошибок в программе. Итак, я думаю, что анализатор ошибается, но я просто хочу попросить вас о помощи.

Что вы думаете?

Спасибо за вашу помощь.


person andi1984    schedule 03.09.2011    source источник


Ответы (1)


Вы не должны вызывать выпуск на объекте, возвращаемом геттером (геттер может иметь побочные эффекты, пользовательскую логику, возвращать автоматически выпущенные объекты и т. д., поэтому вы не можете предположить, что [self.speakerFetchResults release] и [speakerFetchResults release] имеют одинаковые результаты).

Вы можете просто сделать:

self.speakerFetchResults = nil; // this releases the old value

Или, в Dealloc, где использование методов доступа не рекомендуется:

[speakerFetchResults release];
person albertamg    schedule 03.09.2011