iOS 記憶體管理機制和循環參考處理方法,ios記憶體管理

來源:互聯網
上載者:User

iOS 記憶體管理機制和循環參考處理方法,ios記憶體管理

簡述

ARC: 自動引用計數, Automatic Reference Counting

MRC: Mannul Reference Counting

 

ARC工作原理

1.當每次建立一個新執行個體時,ARC會分配一塊記憶體用來儲存執行個體資訊,在記憶體中會包含執行個體的類型資訊,以及這個執行個體所有的相關屬性的值。

2.如果該執行個體不再被使用時,ARC會自動釋放執行個體所佔用的記憶體,並讓釋放的記憶體儲存其他的資料。這樣能保證使用的執行個體不會一直佔用記憶體空間。

3.ARC收回和釋放了正在被使用的執行個體,該執行個體的屬性和方法將不能再被訪問和調用,一旦嘗試調用,會造成應用程式的崩潰

4.為了保證使用中的執行個體不會被銷毀,ARC會跟蹤和計算每一個執行個體被多少屬性,常量和變數所引用,一旦有引用,都會對執行個體建立強引用。強引用會將執行個體牢牢的保持住,只要強引用還在,執行個體就不會被銷毀。

 

迴圈強引用問題

迴圈強引用是指兩個對象相互進行建立了強引用,這樣的話2個執行個體的記憶體將永遠不會被釋放。

這樣的話會造成記憶體流失。可以通過弱引用(Weak Reference)或無主引用(Unowned Reference)解決這個問題。

 

代碼中常用寫法

OC

//定義一個宏#define WS(weakSelf) __weak __typeof(&*self)weakSelf = self;//調用的時候WS(weakSelf);    [XPApiManager getVideoListWithType:self.listType pageIndex:self.pageIndex pageSize:self.pageSize progress:^(NSProgress *progress) {        [weakSelf.tableView reloadData];    } finished:^(NSString *msg, id responseObject) {        }

  

@property (weak, nonatomic) id<XPDetailMenuPopViewDelegate> delegate;@property (weak, nonatomic) IBOutlet UIImageView *imgFavorite;

  

Swift

lazy var strHTML: () -> String = {        [unowned self] in        //代碼編寫區
   self.XXX }

  

XPHomeViewModel.loadCategoryGroup { [weak self] (outGroups) in            self!.outGroups = outGroups        }

  

weak var tmpSelf = selfCouponData.loadCouponData { (data, error) -> Void in        tmpSelf!.couponTableView?.reloadData()}

  

weak var delegate: YMCategoryBottomViewDelegate?@IBOutlet weak var tableView: UITableView!

  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.