我正在使用示例代码 https://gist.github.com/150447
当viewcontroller卸载时,我将网络队列设置为nil,并且还调用reset方法。
[[self networkQueue1] reset];
[self setNetworkQueue1:nil];
但是一旦我回到上一个视图控制器,我仍然会出现异常。
* - [myViewController performSelector:withObject:]:消息发送到解除分配的实例0xc1d1bb0
请说明哪里出错了。
谢谢,
答案 0 :(得分:3)
您需要在dealloc()方法或更早版本中取消任何委托。根据您正在设置的确切代表等,这样的事情应该这样做:
for (ASIHTTPRequest *req in [queue operations])
{
[req cancel];
[req setDelegate:nil];
}
[queue setDelegate:nil];
基本上,您需要确保在委托被销毁之前删除任何当前请求的委托 - 这将确保永远不会调用已释放的委托。
答案 1 :(得分:0)
请参阅此帖子NSURLConnection gives EXC BAD ACCESS when tap on other tab while data loading
基本上,一个对象仍然有一个对你的视图控制器的引用(可能它可以回调它),当你回到之前的VC时,当前的VC正被释放(应该这样)。你需要找到该对象,并将其引用到您的VC(可能称为“委托”或“回调”)。 希望有所帮助。