我想终止所有当前调用的方法,然后简单地重新初始化我当前的对象。所以当用户点击开始按钮时,我会调用一堆方法......开始做一些事情。然后当用户点击取消时,我需要简单地停止所有正在运行的任务/方法并重新初始化。
我不希望应用程序本身终止。所以不能使用 [NSApp terminate:nil]。我只需要停止所有当前功能,然后我可以调用 [self init]; 提前致谢。
我想终止所有当前调用的方法,然后简单地重新初始化我当前的对象。所以当用户点击开始按钮时,我会调用一堆方法......开始做一些事情。然后当用户点击取消时,我需要简单地停止所有正在运行的任务/方法并重新初始化。
我不希望应用程序本身终止。所以不能使用 [NSApp terminate:nil]。我只需要停止所有当前功能,然后我可以调用 [self init]; 提前致谢。
首先,您必须设置一些标志并禁用您的用户界面,直到所有方法都完成。例如,self.cancelled = YES
。
接下来,如果设置了该标志,则应调整每个方法以返回:
- (void)doSomething
{
if (self.cancelled) return;
// ...
for (/* ... */) {
// ...
if (self.cancelled) return;
// ...
}
// etc...
}
然后,您需要一种机制来跟踪您的所有方法。最有可能的是,您将使用NSOperationQueue
or dispatch_queue_t
。查看文档以了解如何在队列变空时获得通知。
最后,重置self.cancelled
标志并取消阻止您的用户界面。