当NSException
在应用程序扩展(例如共享扩展)中引发 an 时,似乎这只是挂起主机应用程序(例如 Safari)。
异常处理程序也不起作用,如下所示:
static ShareViewController * shareVC;
// ...
- (void)viewDidLoad {
[super viewDidLoad];
shareVC = self;
NSSetUncaughtExceptionHandler(&exceptionHandler);
// ...
}
void exceptionHandler(NSException *exception) {
NSArray *stack = [exception callStackReturnAddresses];
if (stack.count > 0) {
[GoogleAnalyticsInterfaceManager trackException:@"An exception occurred"];
}
[shareVC.extensionContext completeRequestReturningItems:@[] completionHandler:nil];
}
引发异常只会导致此控制台条目:
来自 pid 5922 的连接:警告:在解码收到的对消息“_loadItemForPayload:contextIdentifier:completionHandler:”的回复时捕获异常,丢弃传入消息并调用失败块。
所以扩展以某种方式在内部捕获了异常,但仍然无限期地冻结主机应用程序(很可能是因为completeRequestReturningItems:completionHandler:
没有在视图控制器上调用?)。
iOS 错误?