Как обращаться с NSZombies в асинхронном NSURLConnection?

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

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

1 ответ

Решение

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

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

id myObject = [[SomeObject alloc] init];

/* Some code */

[myObject release];
myObject = nil;

/* Some more code */

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

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

Другие вопросы по тегам