Dealloc в теме - PullRequest
       17

Dealloc в теме

0 голосов
/ 06 октября 2011

В приложении есть список документов, которые вы можете скачать.

Я управляю процессом асинхронной загрузки с помощью NSURLRequest и NSURLConnection. Просмотр документа осуществляется с помощью QLPriviewController.

Когда я загружаю документ и до того, как он загружен полностью, я возвращаюсь назад и нажимаю другой документ, я получаю эту ошибку:

*** -[QLPreviewController respondsToSelector:]: message sent to deallocated instance 0x3479a0

Я нашел проблему, но не знаю, как ее решить.

В методе dealloc я освобождаю QLPreviewController. когда я удаляю релиз, он работает, но я предполагаю, что это утечка памяти.

Может ли кто-нибудь помочь мне с этим головоломкой?

EDIT:

инициализация запроса и подключение:

NSURLRequest *theRequest = [NSURLRequest requestWithURL:document.latestVersionURL
                                                        cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                    timeoutInterval:60.0];

            theConnection = [NSURLConnection connectionWithRequest:theRequest delegate:self];

1 Ответ

1 голос
/ 07 октября 2011

Сохранить ссылку на NSURLConnection в качестве переменной экземпляра.

В вашем методе dealloc перед освобождением QLPreviewController вызовите cancel для NSURLConnection.

Это остановит запрос и предотвратит попытку вызова любых методов на освобожденном QLPreviewController.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...