由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“线程违规:预期主线程”

Posted

技术标签:

【中文标题】由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“线程违规:预期主线程”【英文标题】:Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'threading violation: expected the main thread' 【发布时间】:2020-01-28 17:45:05 【问题描述】:

我的应用正在使用第三方库,并且在某些设备(例如 ios 13.3)上发生崩溃

尝试在主线程调用方法

主线程检查器:在后台线程上调用的 UI API: -[UIApplication statusBarOrientation] PID:1496,TID:390696,线程名称:(无),队列名称:com.apple.root.default-qos.overcommit,QoS: 0

2020-01-28 12:31:47.733875+0000 我的 BT Gotham[1496:390696] *** 由于未捕获的异常而终止应用程序 'NSInternalInconsistencyException',原因:'线程违规: 预计主线程'

尝试在后台线程调用方法

这是错误

-[FBSSerialQueue assertOnQueue] 中的断言失败,/BuildRoot/Library/Caches/com.apple.xbs/Sources/FrontBoardServices/FrontBoard-626.4.1/FrontBoardServices/FBSSerialQueue.m:98 2020-01-28 17:23:47.972336+0000 我的 BT Gotham[1773:459656] *** 由于未捕获的异常而终止应用程序 'NSInternalInconsistencyException',原因:'线程违规: 预计主线程'

仅供参考: 我总是在后台线程上使用 API 方法,它在大多数设备上都可以正常工作,我上面引用的问题仅在某些设备上有效。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void)
    [LibObj model_Method:self];
);

【问题讨论】:

错误提示“'线程违规:预期主线程'”,您是否尝试在主线程上调用它? 这能回答你的问题吗? iOS 13: threading violation: expected the main thread @TejaNandamuri - 我尝试调用主线程我再次崩溃未捕获的异常'NSInternalInconsistencyException',原因:'线程冲突:预期主线程' 如果你真的在主线程上调用它,那么这个错误可能在第三方库上。在那种情况下,我认为仅凭这些信息我们无能为力 【参考方案1】:

看起来,您正在从后台调用 UI 方法......它应该是这样的:

DispatchQueue.main.async 
  // use your method...
 

但是,如果您的第三方库已经在幕后进行 DispatchQueue.main 调用,那么当您进行异步调用时,它可能会搞砸......

【讨论】:

我尝试在 Objective C 上以异步方式调用主线程上的方法 dispatch_async(dispatch_get_main_queue(), ^ ); 但需要注意的是,当我在后台线程中调用时,它在所有设备中都可以正常工作,并且在少数设备中崩溃。 哪些设备?只有arm64e?只有ios 13?崩溃的一致性如何?它必须有一个模式...... 我正在测试的设备是iphone 6s dispatch_async(dispatch_get_main_queue(), ^ ///在这里写你的代码。主要是UI更新应该写在这里。在我的情况下,我正在调用这样的普通控制器的方法。myclass myMethod:self] );

以上是关于由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“线程违规:预期主线程”的主要内容,如果未能解决你的问题,请参考以下文章

目标 C:由于未捕获的异常“NSInvalidArgumentException”而终止应用程序

由于未捕获的异常而终止应用程序 [UIImageView _isResizable]

由于未捕获的异常而终止应用程序,同时加载视图

由于未捕获的异常“NSInternalInconsistencyException”错误而终止应用程序

“由于未捕获的异常而终止应用程序”在推送视图控制器时崩溃

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,