2013-07-21 2 views
0

У меня есть класс, который использует NSURLConnection для запуска запроса POST.EXC_BAD_ACCESS - NSURLConnection

У меня есть другие классы, которые используют делегат в этом классе, который он использует для запуска события, когда ответ получен.

Когда я разобрана ответ, я называю делегат так:

- (void)connectionDidFinishLoading:(NSURLConnection*)conn { ... 
      if (delegate) 
      { 
       [delegate serverDataLayerResponse:entity]; 
      } ... } 

я получаю «EXC_BAD_ACCESS (код = 1, адрес -...» на линии внутри блока, если .

Я даже пытался @try и @catch вокруг этой части, но это кадры из фильма убивает мое приложение.

Я подозревал, что делегат все еще указывает как объект в памяти, которая была выпущена? Как могу ли я защищать от этого?

Спасибо за любую помощь.

+1

Держите сильную/сохраняющую ссылку на нее где-то. – Kevin

ответ

1

У вас плохой указатель. delegate отличен от нуля, поэтому тест проходит, но не указывает на действительный объект. Вы можете поставить точку останова в -dealloc делегата, чтобы определить, был ли объект удален. Кроме того, попробуйте сломать, где вы назначаете делегата, и подать иск, у вас есть действительный объект в этот момент.

Смежные вопросы