终止cocoa应用程序中的所有方法并重新启动

时间:2012-06-02 22:05:35

标签: objective-c cocoa

我想终止所有当前调用的方法,然后只需重新启动当前对象。 因此,当用户点击“开始”按钮时,我会调用一堆方法...开始做事情。然后当用户点击取消时,我需要简单地停止所有正在运行的任务/方法并重新初始化。

我不希望应用程序本身终止。所以不能使用[NSApp终止:nil]。我只需要所有当前的功能停止然后我可以调用[self init]; 提前谢谢。

1 个答案:

答案 0 :(得分:2)

首先,您必须设置一些标志并禁用您的用户界面,直到完成所有方法。例如,self.cancelled = YES

接下来,如果设置了该标志,则应调整每个方法以返回:

- (void)doSomething
{
    if (self.cancelled) return;
    // ...
    for (/* ... */) {
        // ...
        if (self.cancelled) return;
        // ...
    }
    // etc...

}

然后,您需要一种机制来跟踪所有方法。最有可能的是,您将使用NSOperationQueuedispatch_queue_t。查看文档以了解如何在队列变空时获取通知。

最后,重置self.cancelled标记并取消阻止您的用户界面。