Когда освобождать объект NSUrlConnection - PullRequest
7 голосов
/ 11 октября 2009

Какова правильная точка для освобождения объекта NSUrlConnection?

В моей программе я выделяю NSUrlConnection, а затем initWithRequest для запуска асинхронно.

Теперь я отвечаю за освобождение объекта - когда я могу / могу освободить? Немедленно, если я не буду использовать это снова?

Ответы [ 4 ]

10 голосов
/ 11 октября 2009

Когда вы закончите с NSURLConnection. Вы узнаете, что с этим покончено, когда ваш NSURLConnection делегат получит - (void)connectionDidFinishLoading:(NSURLConnection *)connection или - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error. Просто отпустите его в конце этих двух методов.

7 голосов
/ 10 января 2010

Ваше использование NSUrlConnection может быть немедленно прекращено.

Фреймворк выйдет после завершения работы с ним.

1 голос
/ 01 декабря 2010

Это немного поздно (ваш вопрос был опубликован в 2009 году, более года назад), но у меня возникли некоторые проблемы с моим кодом NSUrlConnection. NSUrlConnection продолжал падать, и я думал, что сбой был связан с моим выпуском NSUrlConnection [theConnection release];. Я писал свой код, как в примере Apple здесь , но я закончил тем, что освободил соединение после того, как оно было создано в «Листинге 1», вместо того, чтобы выпустить его, как Apple делает и в didFailWithError, и в connectionDidFinishLoading, и кажется, работает нормально. Я не совсем уверен, но, возможно, оба этих делегата были вызваны, и причиной аварии стал двойной релиз. Я не был уверен, что смогу выпустить свой объект NSUrlConnection сразу после того, как он был создан, пока я не прочитал этот вопрос, но, похоже, это помогло.

1 голос
/ 11 октября 2009

Вам не нужно выпускать его, пока фреймворк не выдаст вам уведомление о том, что это сделано, скажем, connection:didFailWithError:.

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