iOS开发异常处理教程
以下是两篇xcode开发如何处理异常的教程,建议一读
梗概如下:
基本上你能碰到两种崩溃的情况:SIGABRT
(也叫EXC_CRASH
),和EXC_BAD_ACCESS
(也可能叫SIGBUS
或SIGSEGV
)。
SIGABRT
是程序异常,容易定位,EXC_BAD_ACCESS
通常直接就把断点断在了main处,有一定的技巧来寻找原因(比如启用Zombie Objects)。
文章介绍了如何读控制台的错误日志,介绍了异常断点(Exception Breakpoint)、LLDB(GDB)、僵尸对象(Zombie Objects)等。
即便没耐心看完全文,文后也有一个简短的总结:
- 如果程序崩溃在main.m,可以考虑设置一个异常断点
- 如果仍然没有得到有用的信息,可以在LLDB键入
po $eax
命令(扩展:po [$eax class]
,po [$eax name]
,po [$eax reason]
),等于于po [$eax description]
- 如果得到
EXC_BAD_ACCESS
错误,可以启用Zombie Objects
再测试一遍,检查是否引用到了已被释放的对象 - 很多情况下异常由遗漏的或错误的代码与设计器(story或xib)的连接,这些异常通常不会在编译期发现而且不容易被检查代码时人眼发现
- 尽量把警告当错误,很多情况下错误也来自于编译期的“警告”。如果你不明白警告是怎么发生的,就尽量研究清楚
- 模拟器环境与真机是不同的,尽量连不同的真机debug
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。