【问题标题】:Handling exceptions raised during method called via NSObject's performSelectorOnMainThread:withObject:waitUntilDone:处理通过 NSObject 的 performSelectorOnMainThread:withObject:waitUntilDone 调用的方法期间引发的异常:
【发布时间】:2010-09-14 09:16:20
【问题描述】:

如果通过 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,它的语义很奇怪。

【问题讨论】:

    标签: objective-c cocoa macos exception


    【解决方案1】:

    你将无法像那样抓住它们。 Cocoa 可能会捕获异常并将其记录到控制台,但它不会在调用 -perform 的线程中重新引发它们。相反,您可以在 -myMethod: (或调用 -myMethod:) 的包装器中捕获它们,并将它们存储在其他线程可以读取它们的位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-24
      • 1970-01-01
      • 2022-01-08
      • 2018-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-29
      相关资源
      最近更新 更多