Как обращаться с 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
,