iOS内存优化及排查方法
生活随笔
收集整理的這篇文章主要介紹了
iOS内存优化及排查方法
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.IBOutlet?對(duì)象需要release
?
?
2.不停的往UIView,特別是UIScrollView上add相同SubView。一定要記得清除之前的SubView,并且在dealloc函數(shù)中執(zhí)行該方法
for?(UIView* sbViewin?scrvBg.subviews)?
{
? ? [sbView?removeFromSuperview];
}
這里還有個(gè)獲得subView的小技巧:
[subView?setTag:300];
subView = [self.viewviewWithTag:300]
?
3.dealloc不一定會(huì)被調(diào)用,所以可以自己手寫一個(gè)myRelease方法,當(dāng)退出該界面的時(shí)候手動(dòng)調(diào)用release需要釋放的對(duì)象,并且將其置為nil。
?
4.記住,如果你不太明白UIView的drawRect的調(diào)用時(shí)機(jī),千萬不要輕易往drawRect里寫代碼,特別是沒有立即release的對(duì)象。很容易在這里因?yàn)槎啻握{(diào)用了drawRect而沒有release該對(duì)象導(dǎo)致內(nèi)存溢出。
?
5.檢查內(nèi)存泄漏最好的工具是xCode,當(dāng)然不是說xCode工具排查完了就OK了。我們發(fā)現(xiàn)xCode只能檢查明顯的代碼級(jí)別泄漏,而像上面第四點(diǎn)因?yàn)槎啻握{(diào)用某個(gè)函數(shù)卻沒有配對(duì)release的邏輯性泄漏是排查不出來的,只能通過代碼閱讀排查。
我這里能給出的經(jīng)驗(yàn)就是,alloc的對(duì)象應(yīng)該立即release。如果該對(duì)象不能立即release,必須保證alloc和release必須配對(duì)調(diào)用,特別要留意那些可以多次調(diào)用且包含alloc卻未被及時(shí)release的函數(shù)。四個(gè)字概括“非常危險(xiǎn)”!
?
6.屬性對(duì)象不要用Self.來alloc它,例如:
self.my_arr =[[NSArray alloc]init];??? ---------- ? ? 錯(cuò)誤!
?
NSArray *tmpArr = [[NSArray alloc]init];
self.my = tmpArr;
[tmpArr release]; ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ----------? ? ? 正確
總結(jié)
以上是生活随笔為你收集整理的iOS内存优化及排查方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java笔记:自己动手写javaEE
- 下一篇: 在Mac下安装使用OpenCV