когда отменить nsurlconnection в uinavigationcontler - PullRequest
1 голос
/ 27 июня 2011

Может кто-нибудь объяснить мне, почему метод dealloc viewcontroller не вызывается, когда я нажимаю кнопку на контроллере uinavigation?

Я хочу правильно отменить соединение nsurl, чтобы он не пытался отобразитьвсплывающее окно и сбой, потому что его делегат больше не действителен.

Мой NSURLConnection инициализируется следующим образом:

NSURLRequest *request = [ [ NSURLRequest alloc ] initWithURL: [ NSURL URLWithString: [ NSString stringWithFormat: @"http://www.url.com" ], string1, string2 ] ] ];

connection = [ [ NSURLConnection alloc ] initWithRequest: request delegate: self ];

[ request release ];

Я освобождаю соединение в connectionDidFinishLoading и didFailWithError, но я хочу отменить и освободить соединениекогда пользователь нажимает кнопку возврата.Наиболее логичным местом, по-видимому, является метод dealloc, но я подозреваю, что он не вызывается, поскольку соединение сохраняет viewcontroller.

Каков наилучший способ убедиться, что соединение отменено, когда кнопка возвратанажата?Я не хочу использовать viewwilldissapear, потому что я представляю другой viewcontroller модально, который не должен быть причиной для отмены (если такая же проблема не возникнет в модальном viewcontroller, всплывающее окно + сбой).

Ответы [ 2 ]

0 голосов
/ 27 июня 2011

Я предлагаю вам использовать viewwilldisappear. Даже если вы представите другой контроллер модального вида, нет проблем. И просто делай так в своем видении. Объявите ваш объект подключения в файле .h затем

if(urConnection){
  [urconnection Cancel];
  [urconnection release];
}
0 голосов
/ 27 июня 2011

Что ж, лучше освободить объект подключения в методе dealloc или делегате connectionDidFinishLoading.Но я не думаю, что это полезно, чтобы освободить соединение при нажатии кнопки назад, так как после нажатия кнопки возврата объект сам разрушается и вызывает метод dealloc.Поэтому используйте метод dealloc для размещения кода для освобождения соединения.

...