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)重复赋值,这种比较常见,一般也没有注意看到问题所在,下面是我截的几种情况:

![(@2Q1OW%N)F7JL$N~QA3.jpg

IOS 如何排除闪退和内存泄漏问题_第1张图片
8`V9A{Z1)0_G2J1KY_NE)2V.jpg
                      (3)定义delegate的时候用strong,这样也会造成强引用,比如:
@property (nonatomic, strong) iddelegate;
                       (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)

本人攻城狮一只:
爱好阅读,有一个写作的美梦,喜欢乒乓球,游泳,旅游,每天过着充实而忙碌的生活!
2016年没啥愿望,存钱还房贷,写50篇读书笔记和技术笔记就好!
喜欢我的文字,就关注我吧,希望能共同进步

你可能感兴趣的:(IOS 如何排除闪退和内存泄漏问题)