内容简介:级别: ★☆☆☆☆标签:「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)。图示如下。
二、文本本地化问题
当工程 Target -> Build Settings -> Static Analyzer 下的 Missing Localizability 设置为 YES 时,使用 Analyze 功能后可以发现一些控件会提示文本本地化问题 User-facing text should use localized string macro 。图示如下:
按照提示,使用 NSLocalizedString(<#key#>, <#comment#>) 修饰文本即可修复,图示如下:
或者,将 Missing Localizability 设置为 NO 也可以。图示如下:
三、逻辑问题
使用 Analyze 可以分析出来代码中潜在的逻辑问题。比如直接使用NSNumber的对象作为条件时,会得到提示 Converting a pointer value of type 'NSNumber *' to a primitive boolean value; instead, either compare the pointer to nil or call -boolValue 。图示如下:
根据提示,我们有两种修改方式,图示如下:
虽然这两种修改方式都能解决问题,但不完全一样,要注意其中的差别,选择需要的使用。
四、内存问题
虽然 ARC 帮助开发者管理了大部分的内存问题。但像 CGImageRef 等C系列的代码还需要开发者管理内存。这些内存问题在编译过程中很难发现,但使用 Analyze 可以给出相应的提示。图示如下:
上图中有两处和内存相关的提示,开发者可以按照提示进行相应的修改。图示如下:
五、数据问题
在编码过程中,一些数据问题可以通过 Analyze 很好的提示出来。比如下图:
上图中的 string 被提示在初始化后从未被用到。是因为第二部的赋值操作为string重新申请了内存。这时,开发者去掉第一步初始化方法即可。图示如下:
六、语法问题
在重写类的 init 方法时,有时会手误写出语法问题,这时可以使用 Analyze 检测出问题。图示如下:
根据提示自己检查可以知道是 if 语句写错了,多了一个 = 。修改如下:
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- iOS常用调试方法:静态分析
- 静态库遇到静态库
- 全局变量,静态全局变量,局部变量,静态局部变量
- Android NDK秘籍--编译静态库、调用静态库
- static特别用法【静态导包】——Java包的静态导入
- c# – 为什么委托在静态方法中使用时不能引用非静态方法?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Hacking Growth
Sean Ellis、Morgan Brown / Crown Business / 2017-4-25 / USD 29.00
The definitive playbook by the pioneers of Growth Hacking, one of the hottest business methodologies in Silicon Valley and beyond. It seems hard to believe today, but there was a time when Airbnb w......一起来看看 《Hacking Growth》 这本书的介绍吧!