Получение EXC_BAD_ACCESS при вызове метода - PullRequest
0 голосов
/ 08 июля 2011

Это действительно странно с моей точки зрения.Я никогда не видел ничего подобного.Я поместил все свои выпуски в метод с именем releaseMethod.Затем в моих dealloc и didReceiveMemoryWarning у меня есть [self releaseMethod];. Я делаю это, чтобы быть более объектно-ориентированным и сохранять код, потому что у меня много релизов.Но иногда (2 из 5 раз, дай или забери), я получаю EXC_BAD_ACCESS на releaseMethod вызове dealloc.Код ниже.Я не знал, что было возможно иметь вызов метода, чтобы получить плохой доступ.Я понимаю управление памятью и память не связана с вызовом метода, верно?Заранее спасибо.

 - (void)dealloc {
     [super dealloc];
     [self releaseMethod];
 }

Ответы [ 2 ]

3 голосов
/ 08 июля 2011

Поместите свой [super dealloc] в конец dealloc, чтобы вы могли сначала очистить вещи в своем классе, прежде чем очищать вещи в суперклассе (от которого вы можете зависеть).

2 голосов
/ 08 июля 2011

Если вы отправите сообщение release объекту, который уже был освобожден, это сообщение вы получите. Убедитесь, что вы не перепродали что-то в releaseMethod. Помните, что когда объект освобождается, он освобождает объекты, которые он хранит.

Вы должны также поставить [self releaseMethod], прежде чем позвонить [super dealloc].

...