IOS OBjective-C 內存概念 (三、自動釋放池和ARC)

1、自動釋放池的基本概念性能

    cocoa中有一個自動釋放池(Autorelease pool)的概念,顧名思義,它是能夠存放一些實體的集合。在這個自動釋放池中的對象,是可以被自動釋放的。NSObject類提供了一個autorelease消息,當咱們向一個對象發送autorelease消息時,這個對象就被放入了自動釋放池。
spa

    建立自動釋放池:    .net

@autoreleasepool {
//入池對象 5.0以後的寫法
}
NSAutoreleasepool *pool = [[NSAutorelease alloc] init];
//入池對象 5.0以前的寫法
[pool release];

    自動釋放池的銷燬時間:
code

       當咱們將一個對象發送了autorelease消息時,當自動釋放池銷燬時,會對池中的每一個對象發送一條release消息,以此釋放他們。
對象

2、ARC技術的基本概念生命週期

    ARC自動引用技術(automatic reference counting),當你在編譯程序時提供自動管理內存的功能。它會爲自動加入內存的控制代碼,控制對象的生命週期。如此一來,大大簡化內存的管理。注意版本的支持是在IOS4(不支持弱引用),IOS5之後。
內存

    垃圾回收機制的基本概念
編譯器

    與Java、.net語言相同object-c2.0之後,提供了垃圾回收機制。但在IOS移動設備終端中,並不支持垃圾回收機制(取決於終端設備的性能)。所以,iPhone並不能對內存進行自動垃圾回收處理(中間模式autorelease)。咱們須要注意垃圾回收機制並非ARC。ARC也須要管理內存,只不過隱式的管理內存,編譯器會在適當的地方自動插入retain、release和autorelease消息。
it

相關文章
相關標籤/搜索