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

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

在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)。图示如下:

iOS 常用调试方法

二、文本本地化问题

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

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

或者,将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 常用调试方法

总结

上述几部分内容只是对Analyze功能的举例,其实际能检测出的问题会更多。另外,Analyze也有自己的局限性,其检查结果也只是辅助开发者查找问题,真正优化代码需要开发者更多的技术经验。

【本文是51CTO专栏机构360技术的原创文章,微信公众号“360技术( id: qihoo_tech)”】

戳这里,看该作者更多好文

责任编辑:赵宁宁 来源: 51CTO专栏
相关推荐

2019-04-18 09:31:07

iOS项目开发断点代码

2019-04-26 06:58:56

iOSLLDBXcode

2012-10-31 17:37:48

2016-10-08 22:33:54

相关分析数据

2022-09-07 15:47:21

数据分析对比分析大数据

2017-01-19 19:20:35

iOS调试小技能

2013-05-17 10:54:37

iOS开发iOS SDK调试技巧

2011-11-03 13:18:19

交换机故障方法

2011-07-03 19:58:34

SEO

2022-06-14 11:57:40

恶意软件勒索软件

2017-12-21 14:19:15

2015-09-01 10:37:54

ios静态库开发

2018-08-09 20:47:41

2009-08-28 12:41:49

静态方法与非静态方法

2020-07-14 08:48:07

数据分析技术IT

2013-07-11 10:16:07

Android调试

2021-07-11 06:45:18

Linux内核静态

2013-03-25 11:00:35

互联网开发

2023-11-26 17:47:00

数据分析

2020-12-08 10:27:04

数据分析技术IT
点赞
收藏

51CTO技术栈公众号