如何在异步NSURLConnection中处理NSZombies?

coc*_*est 0 iphone memory-management nsurlconnection nszombie

我目前异步使用NSURLConnection几个UIViews(每个视图句柄NSURLConnection作为委托).我遇到的问题是当用户切换视图太快并且委托成为NSZombie应用程序崩溃时 - 这是NSURLConnection不再有活代委会.那么,第一个问题是,是否有办法绕过这个?

第二个问题很简单 - 我该如何处理NSZombie?简单if(myObject != nil)..根本不起作用.

hal*_*ski 7

您需要取消NSURLConnection你处理它的委托之前.只需在您的NSURLConnection中保留对NSURLConnection的引用UIView,作为委托和调用[urlConnection cancel].

释放消息后,如果继续使用该指针,则需要将指针设置为nil.举个例子:

id myObject = [[SomeObject alloc] init];

/* Some code */

[myObject release];
myObject = nil;

/* Some more code */

if (myObject != nil) {
   [myObject doSomething];
}
Run Code Online (Sandbox Code Playgroud)

但请注意,发送消息是有效的,nil因此您无需安全保护消息发送.如果,它根本不会有任何影响myObject == nil.