iOS常用调试方法之静态分析详解

所属分类: 软件编程 / IOS 阅读数: 1596
收藏 0 赞 0 分享

前言

在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开发笔记--详解UILabel的相关属性设置

这篇文章主要介绍了iOS开发笔记--详解UILabel的相关属性设置,对初学者具有一定的参考价值,有需要的可以了解一下。
收藏 0 赞 0 分享

iOS中获取系统相册中的图片实例

这篇文章主要介绍了iOS中获取系统相册中的图片实例,具有一定的参考价值没有需要的朋友可以了解一下。
收藏 0 赞 0 分享

iOS 检测网络状态的两种方法

一般有Reachability和AFNetworking监测两种方式,都是第三方的框架,下文逐一详细给大家讲解,感兴趣的朋友一起看看吧
收藏 0 赞 0 分享

IOS 性能优化中离屏渲染

本文主要介绍了IOS 性能优化中离屏渲染的资料,提供了几种方法讲解了优化,有需要的小伙伴可以参考下
收藏 0 赞 0 分享

iOS获取当前设备型号等信息(全)包含iPhone7和iPhone7P

这篇文章主要介绍了iOS获取当前设备型号设备信息的总结包含iPhone7和iPhone7P,包括ios7之前之后的获取方式,本文接的非常详细,具有参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

iOS实现爆炸的粒子效果示例代码

之前在网上看到了一个Android实现的爆炸效果,感觉非常不错,所以自己尝试用iOS来实现下效果,现在将实现的过程、原理以及遇到的问题分享给大家,有需要的朋友们可以参考借鉴,下面来一起看看吧。
收藏 0 赞 0 分享

iOS毕业设计之天气预报App

这篇文章主要为大家详细介绍了iOS毕业设计之天气预报App,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

iOS轻点、触摸和手势代码开发

这篇文章主要为大家详细介绍了iOS轻点、触摸和手势代码开发,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

iOS 实现多代理的方法及实例代码

这篇文章主要介绍了iOS 实现多代理的方法及实例代码的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

iOS文字渐变色效果的实现方法

在大家日常开发iOS的过程中,可能会遇到要实现文字渐变色的效果,这篇文章文章通过示例代码和详细的步骤介绍了如何利用iOS实现文字渐变色的效果,实现后的很不错,感兴趣的朋友们下面来一起看看吧。
收藏 0 赞 0 分享
查看更多