处理在通过NSObject的performSelectorOnMainThread:withObject:waitUntilDone调用的方法期间引发的异常:
时间:2020-03-06 14:56:57 来源:igfitidea点击:
如果通过NSObject的performSelectorOnMainThread:withObject:waitUntilDone:调用myMethod中的异常,会发生什么?
特别是,我可以像这样在调用performSelectorOnMainThread
的范围内捕获它们吗?
@try { [self performSelectorOnMainThread:@selector(myMethod) withObject:nil waitUntilDone:YES]; } @catch(NSException *e) { //deal with exception raised in myMethod here?? }
我意识到,如果waitUntilDone为" NO",则此方法的语义很奇怪。
解决方案
我们将无法像这样抓住他们。 Cocoa可能会捕获异常并将其记录到控制台,但不会在名为-perform的线程中重新引发它们。相反,我们可以在-myMethod :(或者调用-myMethod:的包装器)中捕获它们,并将其存储在其他线程可以读取它们的位置。