我在我的应用程序中添加了一个新的数据加载功能。它的目的是将大型数据库的内容从移动设备传输到后端。在我在这个管道中运行的任何函数中,函数的整个内容都在
dispatch_async这将分派到一个非主线程。我还用日志验证了这些日志是否有效。管道上的每一个功能都与主线程无关。然而,我正在经历UI冻结。
问题:
发布于 2016-08-09 22:30:41
你应该用仪器分析你的应用程序。时间分析器(确保使用“记录等待线程”选项)是有用的,系统跟踪也是如此。对于这两种情况,您可能都希望使用“线程策略”视图,

集中在主线程上。有一堆WWDC视频描述了各种方法,包括过时的,但仍然相关的,2012年视频在iOS上构建并发用户界面。还可以寻找新的WWDC视频,其中提到了“剖析”和“工具”。
对于影响性能的非主线程,它通常可以忽略不计,而且您可能还有其他的事情要做。唯一重要的问题是当你使用一个不支持多线程的非常老的设备时。
顺便问一下,你能百分之百确定主线程真的没有反应吗?或者,您可能只是没有看到UI更新得到及时的反映吗?这可能是意外地从后台线程执行UI更新的结果,而不是将它们发送回主队列。
如果你想要更具体的建议,我们需要一个可复制示例的性能问题。但从抽象意义上讲,
发布于 2016-08-09 21:09:05
我会使用这些工具,你可以使用很多工具,比如时间分析器、分配、系统使用等等。在xcode菜单中打开工具使用command+i或Xcode>Open Developer Tools>Instruments。
https://stackoverflow.com/questions/38860310
复制相似问题