Xcode(7.2) 使用技巧(2)
2016-03-09 18:22
225 查看
1.开启 Enable NSZombie Objects(开启僵尸对象) 模式
Enable NSZombie Objects可能是整个Xcode开发环境中最有用的调试技巧。这个技巧非常非常容易追踪到重复释放内存 或者 使用已经释放的内存地址 的问题。该技巧会以非常简洁的方式打印指出重复释放的类和该类的内存地址。
怎么开启僵尸对象呢?首先打开“Edit Scheme”,然后选择Diagnostics选项卡,勾选Enable NSZombie Objects选项。
现在我们可以关掉ARC来测试重复释放的问题、异常和更容易产生的Crashs,但是即使开启ARC,重复释放和与内存相关的Crashs也经常发生。现在假设我们犯了一些错误导致了重复释放的发生来观察将要发生什么。
现在运行这段代码
UIView* view = [[[UIView alloc] init] autorelease];// 释放一次
// it has been autoreleased.
[view release];// 释放一次
Enable NSZombie Objects会让输出这样的崩溃信息
2.Condational Breakpoints(条件断点)
这只是普通的断点,当变量满足一定条件时程序停止
这个调试技巧在当你想要捕获一个循环中的变量的特定值或者一些不常发生的情况时是非常有用的,而不用你每次迭代都停止来查看。
鼠标点击,添加一个普通的断点,然后右键点击断点选择“Edit Breakpoint”,这时就打开了一个断点编辑器,你可以在这里设置断点条件(以及一些其他的断点设置),然后选择“Done”,这个调试技巧非常简单吧。
3[b].unrecognized selector send to instancd 快速定位[/b]
添加一个 add Symbolic Breakpoint
在Symbolic中填写如下方法签名
-[NSObject(NSObject) doesNotRecognizeSelector:]
设置完成后再遇到类似的错误就会定位到具体的代码。
Enable NSZombie Objects可能是整个Xcode开发环境中最有用的调试技巧。这个技巧非常非常容易追踪到重复释放内存 或者 使用已经释放的内存地址 的问题。该技巧会以非常简洁的方式打印指出重复释放的类和该类的内存地址。
怎么开启僵尸对象呢?首先打开“Edit Scheme”,然后选择Diagnostics选项卡,勾选Enable NSZombie Objects选项。
现在我们可以关掉ARC来测试重复释放的问题、异常和更容易产生的Crashs,但是即使开启ARC,重复释放和与内存相关的Crashs也经常发生。现在假设我们犯了一些错误导致了重复释放的发生来观察将要发生什么。
现在运行这段代码
UIView* view = [[[UIView alloc] init] autorelease];// 释放一次
// it has been autoreleased.
[view release];// 释放一次
Enable NSZombie Objects会让输出这样的崩溃信息
2.Condational Breakpoints(条件断点)
这只是普通的断点,当变量满足一定条件时程序停止
这个调试技巧在当你想要捕获一个循环中的变量的特定值或者一些不常发生的情况时是非常有用的,而不用你每次迭代都停止来查看。
鼠标点击,添加一个普通的断点,然后右键点击断点选择“Edit Breakpoint”,这时就打开了一个断点编辑器,你可以在这里设置断点条件(以及一些其他的断点设置),然后选择“Done”,这个调试技巧非常简单吧。
3[b].unrecognized selector send to instancd 快速定位[/b]
添加一个 add Symbolic Breakpoint
在Symbolic中填写如下方法签名
-[NSObject(NSObject) doesNotRecognizeSelector:]
设置完成后再遇到类似的错误就会定位到具体的代码。
相关文章推荐
- C# Winform 程序EXE单例模式的三种方案详细总结
- 54-题目1207:质因数的个数
- 如何设计用户登录
- Swift 基础学习(存储属性)
- Bundle display name – 真正显示到用户屏幕上的 App 名称
- @synthesize vs. @dynamic
- 设计模式之策略模式
- hadoop2.X集群上Hbase的安装
- 表设计随感(一)
- Cocos2dx中零散知识点
- andriod 带看括弧的计算器
- call和apply
- 深入分析 Java 中的中文编码问题
- ListView 仿微信聊天界面
- opencv 网络摄像头(webcamera)
- Android Studio中NDK的配置
- Hudson 持续集成服务器的安装配置与使用
- split和join函数的比较
- What is the difference between a binary tree, a binary search tree, a B tree and a B+ tree?
- javascript array对象