Xcode调试

在昨天的Demo中感觉对debug的理解还差很多。对于我这种经常漏写各种符号标点大小写的来说,如果能把debug理解好了,会有事半功倍的效果。找了一些文档,好好学习。

官方文档:Debug Your App

My App Crashed, Now What? – Part 1

Intermediate Debugging with Xcode 4.5

Xcode调试总结

捕获异常

异常断点(Exception breakpoint)
如果添加了异常断点,当程序每次发生了异常,都会被中断。一般用来捕获未知异常。如下示例:

Terminating app due to uncaught exception ’NSRangeException’, reason:
’-[__NSCFArray objectAtIndex:]: index (10) beyond bounds (3)
Image Title

标志含义

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: '[ setValue:forUndefinedKey:]: this class is not

key value coding-compliant for the key button.'
  1. 有时会碰到这种错误,印象里是请求的网络列表返回为空,出现了个这么诡异的现象,这是一种情况。

  2. NSUnknownKeyException指示了未知的key,而这个未知的key出现在MainViewController里,这个key的名字是button
    先看nib,在这个例子里有一个button,和MainViewController的属性button连接了IBOutlet,但是@property对应的@synthesize没有写,出现了这个问题,虽然在iOS6可以不用写@synthesize了,但是在老版本可能还会出现这个问题

  3. 总结一下,“This class is not key value coding-compliant”这个问题出现在NIB相关的地方,一般是iboutlet已经连接,但是这个属性却不存在,常常发生在ib连着呢,属性给删了。

你可能感兴趣的:(Xcode调试)