[學習筆記—Objective-C]《Objective-C 程式設計 第6版》第十七章 記憶體管理和自動計數

來源:互聯網
上載者:User

標籤:objective-c   ios   ios開發   

本書第十六章講解的時關於檔案和目錄的操作,內容相對簡單,再次略過。
第十七章的學習筆記經本人歸納整理呈獻給大家。

記憶體管理:
- 為了被佔用的記憶體能夠再次利用,通過記憶體管理清理不用的記憶體。如果一個對象不再使用,就需要釋放對象佔用的記憶體

Part 1. 基本記憶體管理模型Part 1.1 自動垃圾收集:
  • 系統能夠自動賈策對象是否擁有其他的對象,當程式執行需要空間的時候,不再被引用的對象會被自動釋放
Part 1.2 手工管理記憶體計數:
  • 每當建立引用到對象的時候需要為引用數+1。[myFraction retain]
  • 不再需要對象時,給對象發送release訊息,為引用數-1。[myFraction release]
  • 當對象的引用計數為0的時候,系統就知道這個對象不再需要使用了。
Part 1.3 自動引用計數(ARC):
  • 系統會檢測出何時需要保持對象,何時需要自動釋放對象,何時釋放對象。
Part 2. autoreleasepool塊
  • 自動釋放池並不包括實際的對象,只是包含對象的引用,對象將在自動釋放池被清理的時候被釋放。
  • 將對象添加到自動釋放池維護的對象列表中:[result autorelease]
  • 清空自動釋放池:給自動釋放池添加drain訊息
  • 當執行到autorelease塊的末尾時,系統會釋放池。
  • alloc,copy,mutable,new為首碼的方法建立的對象都不會被自動釋放。需要在使用完這些對象後負責釋放這些對象的記憶體。主動給這些對象發送release 訊息,或者給對象發送autorelease訊息將對象加入到自動釋放池中。(主動釋放對象
  • 方法返回對象的情況下:將對象放到自動釋放池中 : return [result autorelease]Fraction *result = [[[Fraction alloc] init ] autorelease]

    • 管理每次由for迴圈迭代建立的臨時對象
for (i = 0; i < n; ++i){  @autoreleasepool{    ...臨時對象...  }}
Part 3. 時間迴圈和記憶體配置
  • 為了處理新事件,系統會建立一個新的自動釋放池。
  • 調用應用中的一些方法來處理這個事件,方法返回後,系統清理自動釋放池。
  • 建立的自動釋放對象都被銷毀,除非使用retain,才能從清空自動釋放池的過程中倖存下來。
Part 4. 強變數 和 弱變數

強變數:

  • 所有對象的指標都是強變數
  • 舊對象的引用會在賦值前被釋放。
  • 聲明對象:__strong Fraction *f1
  • 聲明屬性:@property(strong, nonatomic) NSMutableArray *birdNames;

弱變數

  • 系統會追蹤這個變數的引用。當引用的對象釋放時,若變數會被設定為nil
  • 聲明對象:__week UIView *parentView;
  • 聲明屬性:@property(week, nonatomic) UIView *parentView;

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

[學習筆記—Objective-C]《Objective-C 程式設計 第6版》第十七章 記憶體管理和自動計數

相關文章

聯繫我們

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