dispatch_async处理事件

时间:2015-09-07 04:15:22

标签: ios objective-c nsthread dispatch

我知道dispatch_async可以处理线程。

myMethod

但是如何取消线程?

例如:

我有两个viewcontrollers- AViewController和BViewController,A->存在B,以及一个关闭B的按钮。

我在BViewController中做dispatch_async,我想在exec myMethod时解雇B,所以我使用- (void)myMethod { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // handles thing A // play a audio dispatch_async(dispatch_get_main_queue(), ^{ // update UI }); }); } ,它确实从B到A解雇。但回到AViewController后,音频就出现了。

如何立即停止解雇方法执行后的try/except

UnicodeEncodeError

1 个答案:

答案 0 :(得分:2)

您需要的不是GCD和dispatch_async,而是NSOperation。它是GCD的高级包装器,允许您引用异步操作,检查其状态,取消它们等。

我建议使用名为NSBlockOperation的非常方便的子类。您应该在课堂上提及您的操作,如果您需要取消,请拨打[self.myOperation cancel]