Xcode使用之静态分析Analyze

开篇:
在我们对项目进行打包发布前,如果能够对项目进行静态分析一下,也就是使用Xcode自带功能Analyze(快捷键Command+Shift+B),那是再好不过了。因为这能够帮助我们排掉代码中很多潜在的不容易发现的,比如内存泄露、未使用的函数和变量等问题。

这里强行插入苹果官方文档 Analyze your code for potential flaws

Analyze主要分析以下四种问题:

1、逻辑错误:访问空指针或未初始化的变量等;
2、内存管理错误:如内存泄漏等; 比如ARC下,内存管理不包括core foundation
3、声明错误:从未使用过的变量;
4、Api调用错误:未包含使用的库和框架。

但Analyze所做出的判断不一定准确,应该根据给出的提示结合代码去检查。

场景一
Value stored to ‘*********’ is never read.
这里写图片描述

代码中isReachable这个变量只是被赋值,并没有被使用,解除这个提示只需把isReachable给加以注释即可。

场景二:
instance variable used while ‘self’ is not set to the result of '[(super or self) init…]

- (instancetype)initWithType {
    if (self == [super init]) {
    }
    return self;
}

修改为

- (instancetype)initWithType {
    if (self = [super init]) {
    }
    return self;
}

场景三:
Potential leak of an object stored into ‘*********’ (潜在的内存溢出)
这里写图片描述

这里的self.footView,申请了内存并进行了初始化,但全文中并没有使用,接着又将此变量重新赋值。

场景四:

The 'viewWillAppear:' instance method in UIViewController subclass '***' is missing a [super viewWillAppear:] call

根据提示,重写父类即可。

场景五:
nil returned from a method that is expected to return a non-null value
这里写图片描述

改为:

UICollectionReusableView *reusableview = [UICollectionReusableView new];

场景六:
The ‘***’ ivar in ‘***’ was retained by a synthesized property but not released before ‘[super dealloc]’
这里写图片描述
这里写图片描述

把cellBackgroundView的属性声明retain改为assign/weak;
把 “[super dealloc];” 这行代码放到方法最后一行。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值