Освобождение свойства с помощью self.property - ошибки в анализаторе - PullRequest
0 голосов
/ 03 сентября 2011

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

@property (nonatomic, retain) NSMutableArray *speakerFetchResults;

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

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

и хочу снова его освободить в методе сделки UIViewController с помощью

[self.speakerFetchResults release];

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

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

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

[выпуск self.anything]

проблемы.

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

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

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

1 Ответ

2 голосов
/ 03 сентября 2011

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

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

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

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

[speakerFetchResults release];
...