Абсолютно вы можете cancel NSURLConnection
.
Но вы должны быть осторожны и в его отмене.
Если вы решите cancel
в viewWillDisappear
,
затем
Вы не должны делать,
autorelease
, а также вы не должны,
release
это никуда.
Здесьниже краткого объяснения:
Do cancel
ваш NSURLConnection
делегат в viewWillDisappear
[nsurlconnection cancel];
, а также вы должны release
это здесь нигде,
[nsurlconnection release];
Если вы отпустите connection
где-то, как после того, как ваш xml response
получен тогда,
В любом случае он вызовет метод viewWillDisappear
,
здесь вы находитесьесли вы отмените его, то это приведет к сбою вашего приложения.
"освобожденные объекты не будут отменены" *
.
А также другая ситуацияпроисходит при отмене,
Если пользователь приходит и сразу же переходит к другому представлению в первый раз, ваш nsurlconnection
будет отменен в методе viewWillDisappear
.
Снова пользователь приходит к view
исбрасывается непосредственно перед инициализацией или выделением nsurlconnection
, также ваше приложение будет аварийно завершено, поскольку
"освобожденные объекты не будут отменены".
Итак, проверьтеconnection != nil
перед вами cancel
это, а также не забывайте делать
nsurlconnection = nil;
в одно и то же время.
Так что вы можете избежать немедленных вызовов [nsurlconnection cancel] аварийно завершает работу.
SO Наконец, в вашем viewWillDisappear
методе, который вам нужно сделать, это
- Необходимо проверить nsurlconnection! = Nil
- Необходимо отменитьit
- Необходимо выделить null для вашего nsurlconnection
- Необходимо освободить его тем же способом.
Пример кода будет похож наследующие,
- (void) viewWillDisappear:(BOOL)animated
{
if (nsurlconnection != nil)
{
[nsurlconnection cancel];
[nsurlconnection release];
nsurlconnection = nil;
}
}
Надеюсь, это полезно ... Удачного кодирования ...