如何在子线程中找到异常的原因代码?(iOS系统)

How to find the cause code of exception in a sub-threads? (iOS)

提问人:XUX 提问时间:6/28/2023 更新时间:7/7/2023 访问量:21

问:

我是 Web 应用程序开发人员,但不是 iOS 开发人员。最近,我从甲方那里得到了一个iOS项目,需要将我的页面插入其中。当他们在他们的应用程序上运行我的页面时,他们的应用程序崩溃了。这是他们送给我的例外。enter image description here

异常是 NSInternalInconsistencyException,其原因是“必须在主线程上进行调用”。 我们已经测试了好几次。结果如下:

1. 我的 Web 应用程序在空的 iOS 应用程序中运行良好。

2.我的Web应用程序在Android版本的应用程序中运行良好。

3. 我的 Web 应用程序在 Safari 和其他浏览器中运行良好。

4. 我尝试在我的页面中创建一个死循环并在他们的应用程序中运行。但它只会使页面重新加载。页面崩溃不能使他们的应用程序崩溃。

我还问了我的 iOS 开发者朋友。他们说,这种异常的原因肯定在他们的应用程序中。 可悲的是,甲方的开发人员找不到原因,他们的项目无法与我分享。我不知道为什么他们找不到原因,但我确实想帮助他们修复这个错误。我在这个项目上花了太多时间...... :<

请告诉我“如何找到iOS开发中子线程中发生的异常的原因代码?我将把答案分享给 A 方的开发人员。

iOS 多线程 异常

评论

1赞 Paulw11 6/28/2023
某些代码已确定它未在主线程上运行,并因此导致致命错误。这只能通过查找调用导致异常的代码并将其调度到主队列来解决
0赞 XUX 6/30/2023
@Paulw11 如果应用程序运行多个子线程,如何知道 whitch 子线程中的错误?
0赞 Paulw11 6/30/2023
您需要一个适当的符号化堆栈跟踪,它将显示导致主线程冲突的本机代码行
0赞 XUX 7/3/2023
@Paulw11这是否意味着我们需要在创建子线程的每个代码中编写 try-catch 块?有没有一个库可以显示跟踪:异常 ->线程 ->文件中的代码?
0赞 Paulw11 7/3/2023
不。你无法捕捉到这种异常。如果你得到一个适当的崩溃转储,并让 iOS 开发人员对其进行符号化,它应该告诉他们异常被抛出的位置。

答:

0赞 XUX 7/7/2023 #1

似乎添加 try-catch 块是找到原因的唯一方法。问题将结束。