藍懿教育 Objective-C 記憶體管理

來源:互聯網
上載者:User

標籤:藍懿教育 劉國斌 ios objective-c

一、記憶體管理筆記

1、OC記憶體管理,管理堆棧記憶體,主要管理對象是堆記憶體。 
2、記憶體計數:有指向它的,它的計數則加一。或者說有人引用它,計數加一。

3、沒有人引用之後,記憶體計數為0.對象被銷毀。記憶體被釋放。 
ARC 編譯器自動加release 自動記憶體管理 對局部變數出括弧,自動減1. 
mrc 手動記憶體管理。 
[a1 release] 釋放一個,記憶體計數減一。

二、所有對象引用計數為0時,要釋放記憶體的時候,都將調用:方法 dealloc。

上課以打飛機,為記憶體管理執行個體。講解了當敵機被打死的時候,應該釋放記憶體。檢查所有對敵機對象有引用的位置,當所有地方都正確的釋放,那麼,Hero打死敵機,就會進入dealloc方法,此時可以在dealloc方法中輸出一下,若做到了正確的記憶體管理,記憶體沒有泄露,則將有“敵機死了”輸出。

ARC的原則是:誰加,誰負責減。 
記憶體計數加一的情況 
: 
1、alloc命令會導致記憶體計數加一。 
則是:誰加,誰負責減。

2、 
eg: 
[[self.view addSubView:]]添加到介面 記憶體計數會增加 不確定個。 
[[self.view addSubView:]] +1 
[e removeFromSuperView]; -1 
3、 
加到數組 
從數組減。 
4、 
timer 為確保針對對象的方法調用成功 
也要對 對象進行引用。

三、屬性括弧中的關鍵字,用來控制Set、Get方法中得內容。

retain(strong) :讓Set方法做兩件事①把原來的值 release 即-1②把新傳遞進來的值 retain 即+1; 
e.g.: self.enemy 為什麼 self.enemy =[ [NSMutablearray alloc]init] ;需要加一 
alloc +1 
self.enemy Set方法+1

assign(weak) 讓Set 方法做一件事 
把傳遞進來的值 賦值給全域變數,和記憶體計數無關。基礎資料型別 (Elementary Data Type)用 assign。預設為assign。

物件類型,為什麼要使用Strong。Strong關鍵字為什麼要把原來的值減一 
eg.:若兩次賦值 
出現的情況650) this.width=650;" src="http://img.blog.csdn.net/20150905225038851" alt="物件類型Strong關鍵字作用" title="" style="border:none;" />

650) this.width=650;" src="http://img.blog.csdn.net/20150905225117036" alt="這裡寫圖片描述" title="" style="border:none;" />

self.enemy =[ [nsmutablearray alloc]init];+2

self.enemy =[ [nsmutablearray alloc]init];

release(strong) 
self.a = [[UIlable alloc]init];+2 
自動記憶體管理會 -1.用到的同一個變數.如果是retain(strong),會再減一。 
self.a = [[uilable alloc]init];

*例子: 
一個人一次只能放一個風箏。 
在放 新的風箏時 必須把老風箏收回來。再放新的。 
如果不收回來。就放新風箏,那麼老風箏就像一下放走讓它走了,去汙染環境了。*


本文出自 “Get” 部落格,請務必保留此出處http://3517465.blog.51cto.com/3507465/1691659

藍懿教育 Objective-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.