1、设置断点
当在模拟器上程序崩溃时,断点通常直接跳到了main函数中,无法判断具体哪一行代码开始崩溃,添加一个All Exceptions断点就可以了。
2、工程报如下错误:
fatal error: file '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.0.sdk/.../xxx.h' has been modified since theprecompiled header '/Users/Lycros/Library/Developer/Xcode/DerivedData/ModuleCache/.../***.pch.pch' was built
解决方式如下:
Quit Xcode and remove everything in the module cache located here:
~/Library/Developer/Xcode/DerivedData/ModuleCache (删除该文件中的缓存即可)
The cache that was built with a previous version of Xcode is invalid for this version of Xcode and SDK, and that is causing your error
3、iOS模拟器键盘增加中文输入
(1)在模拟器设置中系统语言设置为中文,键盘中添加中文键盘
(2)Xcode菜单项 --> Product --> Scheme --> Edit Scheme --> Run --> Option --> Application Region 设置为 “中国”
(3)Command+shift+k连接电脑键盘、Command+shift+k弹出后收起模拟器键盘
4、关于inputView的坑
自己实现了一个CommentInputView类,在使用该类时,实例名称写为了inputView,结果调试程序在触发一个长按手势后,总是莫名其妙弹出一个全面的背景视图,之后inputView设置为第一响应者时,提示父控制器类型不对然后崩溃。最终排查发现:UIResponder类也有一个属性叫inputView,The custom input view to display when the receiver becomes the first responder. (read-only)。明白了,CommentInputView继承自UIResponder,因此本身已经存在inputView属性,而自己的变量命名与系统变量命名冲突了。
5、模拟内存警告
如果是在模拟器上,可以直接使用模拟器快捷键Cmd+M;
也可以通过代码主动触发内存警告:
[[UIApplication sharedApplication] performSelector:@selector(_performMemoryWarning)];
6、特殊注释
// TODO:待实现的功能
// FIXME:待修复BUG
// ???:有疑问的代码
// !!!:待改进
// MARK:突出标记的代码