日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS内存优化及排查方法

發(fā)布時(shí)間:2025/6/15 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。