麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

深度:ARC會導致的內存泄露

2019-11-14 19:59:23
字體:
來源:轉載
供稿:網友

iOS提供了ARC功能,很大程度上簡化了內存管理的代碼。

但使用ARC并不代表了不會發生內存泄露,使用不當照樣會發生內存泄露。

下面列舉兩種內存泄露的情況。

1,循環參照

A有個屬性參照B,B有個屬性參照A,如果都是strong參照的話,兩個對象都無法釋放。

這種問題常發生于把delegate聲明為strong屬性了。

例,

@interface SampleViewController

@PRoperty (nonatomic, strong) SampleClass *sampleClass;

@end

@interface SampleClass

@property (nonatomic, strong) SampleViewController *delegate;

@end

 

上例中,解決辦法是把SampleClass 的delegate屬性的strong改為assing即可。

 

2,死循環

如果某個ViewController中有無限循環,也會導致即使ViewController對應的view關掉了,ViewController也不能被釋放。

這種問題常發生于animation處理。

例,

比如,

CATransition *transition = [CATransition animation];

transition.duration = 0.5;

tansition.repeatCount = HUGE_VALL;

[self.view.layer addAnimation:transition forKey:"myAnimation"];

 

上例中,animation重復次數設成HUGE_VALL,一個很大的數值,基本上等于無限循環了。

解決辦法是,在ViewController關掉的時候,停止這個animation。

-(void)viewWillDisappear:(BOOL)animated {

    [self.view.layer removeAllAnimations];

}

 

內存泄露的情況當然不止以上兩種。

即使用了ARC,我們也要深刻理解iOS的內存管理機制,這樣才能有效避免內存泄露。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 午夜视频观看 | 精品99在线视频 | 久久午夜免费视频 | 中文字幕在线观看二区 | 国产亚洲综合一区二区 | 欧美精品一二三区 | 国产精品亚洲欧美一级在线 | 依人九九宗合九九九 | 国产成人在线免费观看视频 | 久久久久久久一区二区 | xnxx 日本19| 精品一区二区久久久久久按摩 | 国产一区国产二区在线观看 | 久久精品操 | av在线播放免费观看 | 九九热九九热 | 一级黄色a视频 | 免费在线观看亚洲 | 国产毛片aaa一区二区三区视频 | 欧美精品一区二区三区在线播放 | 毛片免费视频观看 | 亚洲影视在线 | 亚洲尻逼视频 | 欧美成人理论片乱 | 久久久久av电影 | 91小视频在线观看免费版高清 | 欧美成人一级 | 免费久久精品 | 黄视频免费观看 | 国产一区精品视频 | 国产精品剧情一区二区三区 | 护士hd老师fre0性xxx | 91看片在线观看视频 | 国产精品久久久久久久久粉嫩 | 亚洲成人福利网站 | 国产精品久久久久久久久久久久午夜 | 黄网站在线观 | 欧美成人精品一区二区 | 全黄性性激高免费视频 | 精国产品一区二区三区 | 日韩一级成人 |