IOS 如何排除闪退和内存泄漏问题

下面来总结一下我是怎样排除闪退问题的。
1-在哪里闪退
首先了解在哪个界面发生了闪退,然后真机测试或者模拟器测试找到对应的界面进行测试!
1.1-闪退能重现则分以下几种情况
1.1.1-数据问题
数据问题有数组越界、处理数据错误、使用数据类型不匹配等等。都是一些比较容易解决的问题,在此就不多说了,想必很多人都懂处理!
1.1.2-内存泄漏
虽然我们现在iOS大部分都是用ARC自动内存管理模式下开发!但是也不排除会出现内存泄漏问题,主要分为以下几点:
(1)在自定义的block块里用self,这样会造成强引用,会使内存泄漏,比如

AAPullToRefresh *ptr=[self.collectionView addPullToRefreshPosition:AAPullToRefreshPositionBottom actionHandler:^(AAPullToRefresh *v){
     //页数+1
     self.pageNumber ++;
     //请求数据
     [self requestPicData];
     }];

可以自定义一个弱引用来出来

#define WEAKSELF typeof(self) __weak weakSelf = self
(2)重复赋值,这种比较常见,一般也没有注意看到问题所在,下面是我截的几种情况:

在这里插入图片描述

 (3)定义delegate的时候用strong,这样也会造成强引用,比如:
@property (nonatomic, strong) id<AddNumViewDelegate>delegate;
(4)通知没有在适当时机注销。
(5)项目中单列太多。
 1.1.3-布局问题这个问题有点难找,也比较少见,而且难就难在于闪退重现比较难,建议是看项目里用第三方框架布局的时候有没有错。

   2、总结:由于内存泄漏加上项目中代码不规范造成运行内存过大而被苹果内存机制crash掉!下面分享一下我收藏的资料:
   *[IOS性能调优系列:Analyze静态分析](http://www.cnblogs.com/ym123/p/4309400.html)
   *[使用Instruments定位iOS应用的Memory Leaks](http://www.jianshu.com/p/c0aa12d91f05)
   *[iOS内存管理之超级大坑-内存泄漏](http://blog.csdn.net/skylin19840101/article/details/51954648)

END.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明似水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值