iOS記憶體管理編程指南

來源:互聯網
上載者:User

http://blog.csdn.net/lifengzhong/article/details/7739496

基礎資料型別 (Elementary Data Type)是實值型別的,儲存在堆棧上,由編譯器分配和回收,程式員只需要聲明就可以立即使用。NSObject對象及其子類是參考型別的,儲存在堆上,由程式員負責分配和回收。對象在用完後應立即釋放;在有些情況下,對象分配和初始化後被傳遞到另一方法,此時,程式員對該對象不再具有控制權,可以調用對象的autorelease方法把對象丟到自動回收池,自動回收池對象效率較低。如果你對一個對象有所有權,那麼你就要負責其回收的工作,否則,你不需要,也不能取回收你不擁有的對象。

1:所有使用alloc, new, copy或mutabelCopy,以及這些關鍵詞開頭的函數返回的對象,你都是擁有所有權的,也就是要負責這些對象的記憶體回收工作。這是iOS開發中的一種約定,所以,當你編寫自己的alloc, new或copy類型的函數時,也請遵循這樣的命名規範。

2:retain返回的對象,擁有所有權。例如顯示調用retain函數返回的結果,或者synthesize 的retain類型的成員變數。 3:所有使用其他函數返回的對象,沒有所有權。

4:返回的對象的引用,沒有所有權。

5:autorelease返回的對象沒有所有權。

在使用完方法內聲明和分配的對象後,程式員無需做任何事以釋放對象,CPU指令離開該方法後,方法內定義分配的對象自動釋放。執行個體變數/屬性則不同,在某方法內,如果我們已確定不再需要某執行個體變數/屬性了,可以為對象設定nil值,以確保CPU指令離開該類型執行個體後,類執行個體變數/屬性所佔用的資源被正確釋放。一般在viewDidUnload函數裡設定執行個體變數/屬性為nil。

相關文章

聯繫我們

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