我目前正在异步使用NSURLConnection和几个UIViews (每个视图都将NSURLConnection作为委托进行处理)。我遇到的问题是,当用户切换视图太快时,代理变成了NSZombie,应用程序崩溃--也就是说,NSURLConnection不再有活动的代理。那么,第一个问题是,是否有办法绕过这一点?
第二个问题很简单--我如何处理NSZombie?简单的if(myObject != nil)..根本不起作用。
发布于 2009-12-05 01:04:10
在处置NSURLConnection的委派之前,你需要对它进行cancel。只需在UIView中保留一个对充当委托的NSURLConnection的引用,然后调用[urlConnection cancel]。
发布消息后,如果继续使用该指针,则需要将指向该消息的指针设置为空。举个例子:
id myObject = [[SomeObject alloc] init];
/* Some code */
[myObject release];
myObject = nil;
/* Some more code */
if (myObject != nil) {
[myObject doSomething];
}但是,请注意,向nil发送消息是有效的,因此您不需要安全地保护消息发送。如果是myObject == nil,它就不会有任何效果。
https://stackoverflow.com/questions/1848214
复制相似问题