【讀書筆記】iOS-記憶體管理,ios-記憶體管理

來源:互聯網
上載者:User

【讀書筆記】iOS-記憶體管理,ios-記憶體管理

Cocoa的記憶體管理:retain,release和autorelease.

每個對象都維護一個保留計數器。對象被建立時,其保留計數器值為1;對象被保留時,保留計數器值加1;對象被釋放時,保留計數器值減1;當保留計數器值歸0時,對象被銷毀。在銷毀對象時,首先調用對象的dealloc方法,然後回收其佔用的記憶體以供其他對象使用。

當對象接收到一條autorelease訊息時,其保留計數器值並不立馬改變。相反,該對象只是被放入NSAutoreleasePool中。當自動釋放池被銷毀時,會身池中的所有對象發送release訊息。所有被自動釋放的對象都將其保留計數器值減1.如果保留計數器值歸0,則對象被銷毀。當使用AppKit時,Objective-C會在適當的時間為你建立和銷毀自動釋放池,例如在目前使用者事件處理完畢時。除此以外,你要負責建立自己的自動釋放池,Foundation庫工具的模板包含了這些代碼。

 

Cocoa中關於對象及其保留計數器的3條規則。

1,如果使用new,alloc或copy操作獲得一個對象,則該對象的保留計數器值為1.

2,如果通過任何其它方法獲得一個對象,則假設該對象的保留計數器值為1,而且已經被設定為自動釋放。

3,如果保留了某個對象,則必須保持retain方法和release方法的使用次數相等。

 

參考資料:《Object-C基礎教程》

 

  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.