2

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 错误?

4

0 回答 0