iOS常用调试方法之静态分析详解
2019/7/9 23:32:38
本文主要是介绍iOS常用调试方法之静态分析详解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言
在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也有自己的局限性,其检查结果也只是辅助开发者查找问题,真正优化代码需要开发者更多的技术经验。
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对找一找教程网的支持。
这篇关于iOS常用调试方法之静态分析详解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-29Axios库教程:初学者必备指南
- 2024-08-29Axios库资料:新手入门指南与基本使用教程
- 2024-03-14system bios shadowed
- 2024-03-14gabios
- 2024-02-07iOS应用提交上架的最新流程
- 2024-02-06打包 iOS 的 IPA 文件
- 2023-12-07uniapp打包iOS应用并通过审核:代码混淆的终极解决方案 ?
- 2023-11-25uniapp IOS从打包到上架流程(详细简单) 原创
- 2023-11-10【iOS开发】iOS App的加固保护原理:使用ipaguard混淆加固
- 2023-09-30最强大的iOS应用源码保护工具:Ipa Guard,保护你的商业机密代码