欢迎关注我们的公众号,我们每周都会有原创文章分享。我们主要定位在移动开发领域,分享移动开发技术,包括 iOS、Android、小程序、移动前端、React Native、weex 等。
“我靠,这个问题怎么查,尝试了几十遍了,都不能复现?”,“我去,这个问题让我匪夷所思啊”……经常听到这类的声音,所以今天打算给大家简单介绍几款
Xcode
自带的超好用的诊断工具,来提高大家的工作效率。(本文不会介绍详细的使用方法,请自行谷歌或者百度。)
善待编译警告
Xcode
已经为我们准备了十分丰富的编译警告,尽管这些警告不会导致编译不过,但是背后一定没有无缘无故的恨。请正确对待所有警告,避免在运行时产生一些让你感到难以捉摸的现象,
Treat Warnings as Errors
也不失为一个不错的选择。如果你对某些警告有绝对的自信,可以通过修改
Build Settings
里的
Warnings
选项,或者在提示警告的代码处添加
diagnostic ignore
来消除它们。随着
Xcode
的不断更新,你还应该通过工程文件的
Editor-Validate Settings
来将工程配置选项改为最优。
不要忽视Analyze
很早以前
Xcode
就已经为我们提供了静态检测工具,用它可以检测一系列难以发现的问题,例如内存泄露、逻辑错误、未使用的变量和未包含的库等。对于很多项目而言,完整的跑一次
Analyze
会花费较长的时间,也许是因为这一点,这项工具被越来越多的开发者忽视掉。你可以通过修改
Build Settings
里的
Analyze During 'Build'
在平时开发调试的过程中即时地进行Analyze。
运行时诊断
除了编译警告和
Analyze
,苹果还为我们提供了更多的动态调试工具。它们分散在
Xcode
的各个角落,与我们日常开发息息相关,润物细无声。
Debug Gauges
当
App
开始调试之后,
Xcode
左侧的
navigator
视图会自动切换到
debug navigator
。在这里,默认情况下会展示几项关键指标来为你概述当前
App
的运行状态。通过它们你可以大致了解每个线程的运行、内存申请、电量使用、磁盘读写、网络操作等状况。如果你关心更详细的诊断信息,你可以很方便地进入
Instruments
进行相应的诊断。
###Process Debug
Xcode
为我们提供了四种进程调试:
-
View Process by Thread
:线程的调用栈,这个是默认的,也是我们最常用的。加个断点,查看当前的所有线程调用情况。 -
View Process by Queue
:和View Process by Thread
差不多,当前队列名称会替代Thread
命名,同时颜色也要丰富一些。 -
View UI Hierarchy
:可以切换到上帝视角来查看视图层级和各视图属性。 -
View Memory Graph Hierarchy
:可以方便的检测循环引用等内存泄露问题,非常实用。
开启Diagnostics