内容简介:在iOS项目开发过程中,常用到静态分析(Analyze)、断点(BreakPoint)和控制台(Console)进行代码调试。本篇文章介绍Xcode常用调试方法之”静态分析“。本文来自360奇舞团QiShare团队投稿。Xcode的静态分析功能是在程序未运行的情况下,对代码的上下文语义、语法、和内存情况进行分析,可以检测出代码潜在的文本本地化问题(Localizability Issue)、逻辑问题(Logic error)、内存问题(Memery error)、数据问题(Dead store)和语法问题(
在iOS项目开发过程中,常用到静态分析(Analyze)、断点(BreakPoint)和控制台(Console)进行代码调试。本篇文章介绍Xcode常用调试方法之”静态分析“。
本文来自360奇舞团QiShare团队投稿。
一、简介
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语句写错了,多了一个=。修改如下:
总结
上述几部分内容只是对Analyze功能的举例,其实际能检测出的问题会更多。另外,Analyze也有自己的局限性,其检查结果也只是辅助开发者查找问题,真正优化代码需要开发者更多的技术经验。
【本文是51CTO专栏机构360技术的原创文章,微信公众号“360技术( id: qihoo_tech)”】
以上所述就是小编给大家介绍的《iOS常用调试方法:静态分析》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- iOS 常用调试方法:静态分析
- 静态库遇到静态库
- 全局变量,静态全局变量,局部变量,静态局部变量
- Android NDK秘籍--编译静态库、调用静态库
- static特别用法【静态导包】——Java包的静态导入
- c# – 为什么委托在静态方法中使用时不能引用非静态方法?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Usability for the Web
Tom Brinck、Darren Gergle、Scott D. Wood / Morgan Kaufmann / 2001-10-15 / USD 65.95
Every stage in the design of a new web site is an opportunity to meet or miss deadlines and budgetary goals. Every stage is an opportunity to boost or undercut the site's usability. Thi......一起来看看 《Usability for the Web》 这本书的介绍吧!