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