下面來總結一下我是怎樣排除閃退問題的。
1-在哪里閃退
首先了解在哪個界面發(fā)生了閃退馏予,然后真機測試或者模擬器測試找到對應的界面進行測試复斥!
1.1-閃退能重現(xiàn)則分以下幾種情況
1.1.1-數(shù)據(jù)問題
數(shù)據(jù)問題有數(shù)組越界霉旗、處理數(shù)據(jù)錯誤、使用數(shù)據(jù)類型不匹配等等南缓。都是一些比較容易解決的問題胸遇,在此就不多說了,想必很多人都懂處理西乖!
1.1.2-內存泄漏
雖然我們現(xiàn)在iOS大部分都是用ARC自動內存管理模式下開發(fā)狐榔!但是也不排除會出現(xiàn)內存泄漏問題,主要分為以下幾點:
(1)在自定義的block塊里用self获雕,這樣會造成強引用薄腻,會使內存泄漏,比如
AAPullToRefresh *ptr=[self.collectionView addPullToRefreshPosition:AAPullToRefreshPositionBottom actionHandler:^(AAPullToRefresh *v){
//頁數(shù)+1
self.pageNumber ++;
//請求數(shù)據(jù)
[self requestPicData];
}];
可以自定義一個弱引用來出來
#define WEAKSELF typeof(self) __weak weakSelf = self
(2)重復賦值届案,這種比較常見庵楷,一般也沒有注意看到問題所在,下面是我截的幾種情況:
![(@2Q1OW
%N)F7JL$N~QA3.jpg
8`V9A{Z1)0_G2J1KY_NE)2V.jpg
(3)定義delegate的時候用strong楣颠,這樣也會造成強引用尽纽,比如:
@property (nonatomic, strong) id<AddNumViewDelegate>delegate;
(4)通知沒有在適當時機注銷。
(5)項目中單列太多童漩。
1.1.3-布局問題
這個問題有點難找弄贿,也比較少見,而且難就難在于閃退重現(xiàn)比較難矫膨,建議是看項目里用第三方框架布局的時候有沒有錯差凹。
2、總結:由于內存泄漏加上項目中代碼不規(guī)范造成運行內存過大而被蘋果內存機制crash掉侧馅!下面分享一下我收藏的資料:
* [IOS性能調優(yōu)系列:Analyze靜態(tài)分析](http://www.cnblogs.com/ym123/p/4309400.html)
*[使用Instruments定位iOS應用的Memory Leaks](http://www.reibang.com/p/c0aa12d91f05)
*[iOS內存管理之超級大坑-內存泄漏](http://blog.csdn.net/skylin19840101/article/details/51954648)
本人攻城獅一只:
愛好閱讀危尿,有一個寫作的美夢,喜歡乒乓球馁痴,游泳谊娇,旅游,每天過著充實而忙碌的生活罗晕!
2016年沒啥愿望济欢,存錢還房貸,寫50篇讀書筆記和技術筆記就好攀例!
喜歡我的文字船逮,就關注我吧,希望能共同進步