我从NavigationController的子视图调用NSOperation。NSOperation performSelectorOnMainThread崩溃
MyOperation *op = [[MyOperation alloc] target:self action:@selector(didFinishOperation)];
的操作从一个服务器加载一些数据,分析它,然后当工作完成发送
[target performSelectorOnMainThread:action withObject:nil waitUntilDone:YES];
。这通常是工作...
问题是,当我从导航控制器按下后退按钮,而NSOperation正在做它的工作,应用程序崩溃,因为该操作引用一个释放实例。
我试图保持操作 - 但它仍然崩溃...
在此先感谢
我已经取消viewWillDisappear操作: [operationQueue cancelAllOperations] 加载视图时,我运行了多个操作。 正如你上面提到的 - 这将取消操作,但不是如果它在主要执行。 我试过了: if(target) [target performSelectorOnMainThread:action withObject:nil waitUntilDone:YES]; 但仍然发生错误... – abs 2009-11-14 08:26:40
我刚刚检查了我的代码,我的操作在尝试通知其目标之前检查它们是否被取消。 – ohhorob 2009-11-14 08:48:04
感谢ohhorob, 做了这个工作:) – abs 2009-11-14 08:55:32