iOS • 记——浅谈内存静态分析、动态分析和单元测试

iOS开发中,一般的内存分析,主要是看看有没有内存泄露。xcode中提供了两种:静态分析和动态分析。

静态分析工具(Analyze)

1.快捷键:shift+command+B
2.注意:很多开发者总以为Analyze是检测内存泄露,但其实它只是单纯的检测语法缺陷。
3.Analyze只是分析上下语句的逻辑。
4.Analyze只能帮我们检测到一部分可能泄露的代码,到时候需要自己判断处理,程序不会运行。

例如:创建了两个类Person和Dog,分别在他们的接口文件中,引入彼此的头文件,创建全局变量,如下图所示:

Paste_Image.png

Paste_Image.png

在控制器中:

Paste_Image.png

告诉你,这两个类的对象never read,就是没有使用。
但是,如果下面两句代码不注释掉,静态分析就没有问题了,需要我们自己在类中,加入dealloc方法,来判断,两个对象有没有被释放。

动态分析工具(instruments)

1.快捷键:command+i
2.检测内存泄露---->leaks选项打开检测工具。
3.内存泄露:创建了对象,使用完毕没有释放,将来就有可能造成内存泄露,内存泄露主要用于MRC的内存检测。
4.在ARC下也会有泄露的发生:循环引用,Core Foundation
还是上面的代码:

Paste_Image.png
Paste_Image.png
Paste_Image.png
Paste_Image.png
Paste_Image.png

查看问题:

Paste_Image.png

直接点击右上角的xcode图标,可以直接跳到有内存泄露的代码,一目了然,直接修改!优势很明显!

Paste_Image.png
单元测试

首先开发功能逻辑代码,需要对逻辑代码做测试,测试代码可以写在主程序中,但一般我们都不会这么做,所以就有了单元测试。
例如:现在创建一个工具类,写了一个类方法,传入两个整数,返回两个整数的和:

Paste_Image.png

添加单元测试模块:

Paste_Image.png

或者自己添加test文件:

Paste_Image.png

开始测试:

Paste_Image.png

出现红叉,说明有问题:

Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容