Вопрос

В настоящее время я асинхронно использую NSURLConnection с несколькими UIViews (каждое представление обрабатывает NSURLConnection в качестве делегата).У меня проблема в том, что пользователь слишком быстро переключает представления, и делегат становится NSZombie приложение выходит из строя - то есть у NSURLConnection больше нет живого делегата.Итак, первый вопрос: есть ли способ обойти это?

Второй вопрос прост: как мне справиться с NSZombie?Простой if(myObject != nil).. не работает вообще.

Это было полезно?

Решение

Вам нужно отмена тот NSURLConnection прежде чем вы избавитесь от этого делегата.Просто сохраните ссылку на NSURLConnection в своем UIView который действует как делегат и вызывает [urlConnection cancel].

После того как вы отпустите сообщение, вам необходимо установить указатель на него в ноль, если вы продолжите использовать этот указатель.В качестве примера:

id myObject = [[SomeObject alloc] init];

/* Some code */

[myObject release];
myObject = nil;

/* Some more code */

if (myObject != nil) {
   [myObject doSomething];
}

Однако обратите внимание, что допустимо отправить сообщение на nil поэтому вам не нужно охранять отправку сообщения.Это просто не будет иметь никакого эффекта, если myObject == nil.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top