一、Exception 的捕捉
1、message send to dealloc instance
a, 输出控制台(lldb)后面输入:c + enter, 找到对应的行
b, po [object address name], 找到哪个原因
2、在 appDelegate.m 里面添加下面语句
// for debug , to be remved in production NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler); // for debug , to be remved in production -void uncaughtExceptionHandler(NSException *exception) { NSLog(@"CRASH: %@", exception); NSLog(@"Stack Trace: %@", [exception callStackSymbols]); }
在输出错误信息的地方,找到类似下面的信息:
1 libobjc.A.dylib 0x01d4bd0a objc_exception_throw + 44
然后选择加一个breakpoint,symbloic breakpoint
symbol name = objc_exception_throw
module = libobjc.A.dylib
二、杂七杂八知识
1、add customerized class template to xcode
Application -> show package content -> Developer -> Library -> Xcode -> Templates -> File Templates
change all plist's Options -> Type "class"
2、Xcode certificates and Provisioning 的问题。
需要在公司的Keychain Asscess里面导出一个Certificates.p12,设置密码,拷贝到不同的电脑上打开就连接真机了。但是Provisioning还是需要在developer.apple.com上下载。
3、改变 project 的名字
a、slowly-double click the project name ”AppName“, 会refactor 所有有关的名字。
b、要把 project 的文件名字改变,例如把 “AppA” 改成是 “AppB”,就需要把 AppB 重新拉进 project 里面。
c、把 targets --> Build Settings 里面的有关于 “AppA” 的路径都手动的改成 “AppB”, 在把文件拖进 project 的时候,很可能会报 "copy bundle …info.plist",此时需要把 project 的 Build Phase, copy bundle resources 删除掉 xxx-info.plist。
d、要改掉 Run 和 Stop 旁边的 Scheme name 的话,manage scheme 把旧的删掉,再创建一个新的。
4、把加载时候的 default (图片的名字由设备决定)图片,从指定路径倒入操作步骤:
a, 先把 default.png, 放到指定的路径。
b, 然后到 Targets --> Build Phases --> Compile Sources --> + --> other (指定文件)
5、对 Xcode 提速
6、问题:每次 load 程序到设备上都要输入用户名
原因:开发证书安装到了 System 下面了。
解决方法:进入 Keychain Access, 把 System 里面的开发证书都搬到 Login 里面。
7、Mac os Mavericks 把 Xcode 的 command Line tool 卸载了,安装发放 Terminal -> $"xcode-select --install"
8、Xcode 7 新添加了 Enable Address Sanitizer 方便对 EXC_BAD_ACCESS 的调试。
9、OS El Captain 下运行 Xcode6.4,无法识别 iOS5.0 的设备,解决方法:
菜单栏 “window” -> "devices" -> 选中指定的设备,右键 "show xxxxx" 即可。