iOS 常用调试方法:静态分析

栏目: IOS · 发布时间: 6年前

内容简介:级别: ★☆☆☆☆标签:「Xcode静态分析」「Analyze」「potential leak」作者: Xs·H

级别: ★☆☆☆☆

标签:「Xcode静态分析」「Analyze」「potential leak」

作者: Xs·H

审校:QiShare团队

在iOS项目开发过程中,常用到静态分析(Analyze)、断点(Breakpoint)和控制台(Console)进行代码调试。本篇文章介绍Xcode常用调试方法之“静态分析”。

一、简介

Xcode的静态分析功能是在程序未运行的情况下,对代码的上下文语义、语法、和内存情况进行分析,可以检测出代码潜在的文本本地化问题(Localizability Issue)、逻辑问题(Logic error)、内存问题(Memery error)、数据问题(Dead store)和语法问题(Core Foundation/Objective-C)等。功能入口在 Xcode菜单栏 -> Product -> Analyze (Command+Shift+B)。图示如下。

iOS 常用调试方法:静态分析

二、文本本地化问题

当工程 Target -> Build Settings -> Static Analyzer 下的 Missing Localizability 设置为 YES 时,使用 Analyze 功能后可以发现一些控件会提示文本本地化问题 User-facing text should use localized string macro 。图示如下:

iOS 常用调试方法:静态分析

按照提示,使用 NSLocalizedString(<#key#>, <#comment#>) 修饰文本即可修复,图示如下:

iOS 常用调试方法:静态分析

或者,将 Missing Localizability 设置为 NO 也可以。图示如下:

iOS 常用调试方法:静态分析

三、逻辑问题

使用 Analyze 可以分析出来代码中潜在的逻辑问题。比如直接使用NSNumber的对象作为条件时,会得到提示 Converting a pointer value of type 'NSNumber *' to a primitive boolean value; instead, either compare the pointer to nil or call -boolValue 。图示如下:

iOS 常用调试方法:静态分析

根据提示,我们有两种修改方式,图示如下:

iOS 常用调试方法:静态分析
iOS 常用调试方法:静态分析

虽然这两种修改方式都能解决问题,但不完全一样,要注意其中的差别,选择需要的使用。

四、内存问题

虽然 ARC 帮助开发者管理了大部分的内存问题。但像 CGImageRef 等C系列的代码还需要开发者管理内存。这些内存问题在编译过程中很难发现,但使用 Analyze 可以给出相应的提示。图示如下:

iOS 常用调试方法:静态分析

上图中有两处和内存相关的提示,开发者可以按照提示进行相应的修改。图示如下:

iOS 常用调试方法:静态分析

五、数据问题

在编码过程中,一些数据问题可以通过 Analyze 很好的提示出来。比如下图:

iOS 常用调试方法:静态分析

上图中的 string 被提示在初始化后从未被用到。是因为第二部的赋值操作为string重新申请了内存。这时,开发者去掉第一步初始化方法即可。图示如下:

iOS 常用调试方法:静态分析

六、语法问题

在重写类的 init 方法时,有时会手误写出语法问题,这时可以使用 Analyze 检测出问题。图示如下:

iOS 常用调试方法:静态分析

根据提示自己检查可以知道是 if 语句写错了,多了一个 = 。修改如下:

iOS 常用调试方法:静态分析

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据结构与算法分析

数据结构与算法分析

(美)(C.A.谢弗)Clifford A.Shaffer / 电子工业出版社 / 1998-8 / 35.00元

本书综合“数据结构与算法”的知识梳理、习题解答及上机辅导等于一身;精心挑选了覆盖教学大纲的五百多道题目,并且提供所有题目的参考答案;对于较难的算法和上机题,给出了详细的分析和说明;对于学习的重点和难点、易犯的错误、题目的难易和重要性,以及国内教材的差异等都给出了必要的说明。 本书可给使用各种教材讲授和学习“数据结构与算法”(或者“数据结构”)的师生参考,是系统复习该课程和准备应考计算......一起来看看 《数据结构与算法分析》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

在线进制转换器
在线进制转换器

各进制数互转换器