Поскольку вы создали соединение с
[NSURLConnection connectionWithRequest:request delegate:delegate];
у вас нет этого объекта подключения, поэтому вы не должны освобождать его.
Как говорится, я бы не рекомендовал это. Если у вас нет объекта, у вас нет гарантии, что он переживет циклы истощения пула автоматического освобождения, т. Е. Может случиться, что ваш объект соединения (авто) освобождается до его полной загрузки. Вместо этого создайте объявленное свойство retain для хранения соединения:
@property (retain) NSURLConnection *connection;
назначить объект подключения объявленному свойству:
self.connection = [NSURLConnection connectionWithRequest:request
delegate:delegate];
и после завершения загрузки или сбоя соединения освободите его, присвоив объявленному свойству nil
:
self.connection = nil;
Что касается вашего делегата, если он должен существовать только во время загрузки соединения, вы можете автоматически выпустить его, так как соединение сохраняет делегата:
URLConnectionDelegate *delegate = [[[URLConnectionDelegate alloc]
initWithSuccessHandler:^(NSData *response) {
// …
}] autorelease];
self.connection = [NSURLConnection connectionWithRequest:request
delegate:delegate];