查找阻塞主线程的代码的最佳方法是啥?
Posted
技术标签:
【中文标题】查找阻塞主线程的代码的最佳方法是啥?【英文标题】:What is the best way to find code that is blocking your main thread?查找阻塞主线程的代码的最佳方法是什么? 【发布时间】:2012-06-16 20:07:02 【问题描述】:我有一个UIScrollView
,当您滚动时,我在其中放置了一堆视图。它正在从 api 端点下载图像。问题是滚动感觉不如应有的流畅。我知道这是因为大多数情况下阻塞了主线程。我已经搜索了整个代码并注释掉了任何 UI 更新代码,但是快速滚动仍然很慢。
关于查找代码的哪一部分阻塞主线程的最佳方法是什么?
【问题讨论】:
【参考方案1】:仪器。没有什么比这更可怕的了。甚至苹果的documentation 也提到了寻找高 CPU 相关的任务。
不过,我个人推荐使用 Time Profiler。其中here有很好的教程。
【讨论】:
你真的能找到使用工具阻塞主线程的东西吗? 是的,请提供更多详细信息:哪个特定的 Instruments 模板可以帮助我找到哪个操作阻塞了我的主线程?链接的 Apple 文档中未提及或不明显。 这完全取决于您的代码。在某些情况下,仪器可以发现线程死锁,但线程阻塞通常是更适合手动检查堆栈跟踪的调试任务。此外,导致线程死锁的方法多种多样,即使是 Apple 也很难找到一个包罗万象的解决方案。以上是关于查找阻塞主线程的代码的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章