我有一个名为'startTask'的无效方法。可可Mac取消后台进程
在按一下按钮,我推出“startTask”的背景如下:
[self performSelectorInBackground:@selector(startTask) withObject:nil];
我想取消这一过程单击按钮时,我却无法弄清楚如何做到这一点,任何人都可以请帮忙?
在此先感谢
我有一个名为'startTask'的无效方法。可可Mac取消后台进程
在按一下按钮,我推出“startTask”的背景如下:
[self performSelectorInBackground:@selector(startTask) withObject:nil];
我想取消这一过程单击按钮时,我却无法弄清楚如何做到这一点,任何人都可以请帮忙?
在此先感谢
我会使用NSOperation和NSOperationQueue。这些允许取消。线程需要更多的工作来获取信号。
Edit--为例
创建一个简单的类的子类的NSOperation
在您的实现实现-(void)main(){ }
方法。当您的操作执行时调用此方法。
在您想要从创建NSOperationQueue的成员变量来启动它的文件中。
当你想启动你的任务创建操作并将其添加到队列中。它将异步操作,您可以取消它。
这里是iOS的一个问题,但我相信它应该是可可NSOperation on the iPhone
对不起一样,我才意识到你打电话'performSelectorInBackground'而不是'performSelector',改变的东西还真不少。 – Vervious
另外,请参阅http://stackoverflow.com/questions/4992472/how-to-stop-performing-selector-in-background和http://stackoverflow.com/questions/7702023/prevent-performselectorinbackground-from-running-两次 – Vervious