我知道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
答案 0 :(得分:2)
您需要的不是GCD和dispatch_async
,而是NSOperation
。它是GCD的高级包装器,允许您引用异步操作,检查其状态,取消它们等。
我建议使用名为NSBlockOperation
的非常方便的子类。您应该在课堂上提及您的操作,如果您需要取消,请拨打[self.myOperation cancel]
。