在昨天的Demo中感觉对debug的理解还差很多。对于我这种经常漏写各种符号标点大小写的来说,如果能把debug理解好了,会有事半功倍的效果。找了一些文档,好好学习。
My App Crashed, Now What? – Part 1
Intermediate Debugging with Xcode 4.5
捕获异常
异常断点(Exception breakpoint)
如果添加了异常断点,当程序每次发生了异常,都会被中断。一般用来捕获未知异常。如下示例:
Terminating app due to uncaught exception ’NSRangeException’, reason:
’-[__NSCFArray objectAtIndex:]: index (10) beyond bounds (3)
标志含义
SIGABRT(好处理)
EXC_BAD_ACCESS(一般内存问题)
SIGBUS
SIGSEGV
一般错误
[UINavigationController setList:]: unrecognized selector sent to instance 0x6d4ed20
这种要不就是这个类没这个方法,或者调用方法的对象错误,或者拼错,比较简单
This class is not key value coding-compliant
Problems[14961:f803] *** Terminating app due to uncaught exception 'NSUnknownKeyException',
reason: '[<MainViewController 0x6b3f590> setValue:forUndefinedKey:]: this class is not
key value coding-compliant for the key button.'
有时会碰到这种错误,印象里是请求的网络列表返回为空,出现了个这么诡异的现象,这是一种情况。
NSUnknownKeyException指示了未知的key,而这个未知的key出现在MainViewController里,这个key的名字是button
先看nib,在这个例子里有一个button,和MainViewController的属性button连接了IBOutlet,但是@property对应的@synthesize没有写,出现了这个问题,虽然在iOS6可以不用写@synthesize了,但是在老版本可能还会出现这个问题总结一下,“This class is not key value coding-compliant”这个问题出现在NIB相关的地方,一般是iboutlet已经连接,但是这个属性却不存在,常常发生在ib连着呢,属性给删了。