NSURLConnection утечка - PullRequest
       8

NSURLConnection утечка

1 голос
/ 27 ноября 2009

Я следую официальному образцу Apple

http://developer.apple.com/mac/library/DOCUMENTATION/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html

При проверке кода с помощью Instruments я обнаружил утечку, вызванную невыпущенным NSURLRequest. Я включил [request release] вскоре после

NSURLConnection *conn=[[NSURLConnection alloc] initWithRequest:request delegate:self];     

и похоже на работу. Я прав?

С уважением

Ответы [ 2 ]

2 голосов
/ 27 ноября 2009

Запрос автоматически выпущен, что означает, что пул автоматического выпуска должен позаботиться о его освобождении. Если вы используете это в приложении Какао, у вас должна быть автоматическая настройка пула автоматического выпуска, которая будет обрабатывать освобождение автоматически выпущенных объектов.

Если вы работаете с приложением без какао, вам придется настроить его самостоятельно и обязательно освободить / осушить бассейн, чтобы освободить ваши объекты.

Как правило, вам нужно освобождать только объекты, созданные с помощью alloc, copy, mutableCopy или если вы отправили их retain. Это означает, что вам придется освободить объект подключения, созданный с помощью [[NSURLConnection alloc] init..., иначе это приведет к утечке.

Вот ссылка на документ о пулах автоматического освобождения

0 голосов
/ 28 ноября 2009

Ах, понятно. По некоторым причинам я смешал «официальный» пример с собственной реализацией :) В своем коде я делал это:

NSURLRequest *request = [[NSURLRequest alloc] initWithURL: url];

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

Однако большое спасибо за ваш ответ.

Одна вещь сводит меня с ума: я не получаю уведомления по электронной почте, если кто-то отвечает на мои вопросы, хотя я установил маркер ...

Привет

...