美文网首页
iOS • 记——浅谈内存静态分析、动态分析和单元测试

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

作者: 行走的苹果哥 | 来源:发表于2017-02-16 11:33 被阅读315次

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

相关文章

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

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

  • iOS性能测试实战篇(二)

    内存 可分为静态分析和动态分析。l 静态分析Analyzel 动态分析LeaksActivity Moni...

  • 内存分析

    内存分析可以分为静态内存分析和动态内存分析;主要是利用Xcode自带工具进行内存泄露监测; 静态内存分析: 概念:...

  • 内存泄露的分析

    内存泄露的分析 1.静态内存分析 2.动态内存分析概念:

  • iOS内存优化

    内存分析 静态分析 Analyze 动态分析 Instruments 可以查看内存分配情况Allocations ...

  • 内存分析

    主要目的是检测程序是否存在内存泄漏。 静态内存分析,内存分配, 动态内存分析。

  • iOS内存分析方法(静态内存和动态内存分析)

    1.静态内存分析 静态内存分析采用Xcode自带的Aanlyze进行分析,此方法不用运行项目,只是根据代码上下文进...

  • iOS性能优化之Leaks动态分析

    iOS性能优化之Leaks动态分析 Instruments-Leaks有很多跟踪模块可以动态分析和跟踪内存, CP...

  • 内存分析

    内存分析 主要目的就是为了检测程序是否存在内存泄露 1. 静态内存分析(Analyze) 2. 动态内存分析 3....

  • 聊几个iOS中的面试题

    一、内存管理 1、分析工具: 静态分析法:Analyze。 动态分析法:Instrument工具库里的Leaks。...

网友评论

      本文标题:iOS • 记——浅谈内存静态分析、动态分析和单元测试

      本文链接:https://www.haomeiwen.com/subject/dwvcwttx.html