自動釋放池

2021-09-02 17:32:53 字數 716 閱讀 9753

自動釋放池是允許你放棄對乙個物件的持有關係,但可以避免它立即被**的乙個工具,當從方法返回你的物件的時候,這個功能很有用。

1 程式的入口處於在main 函式

這就意味著整個應用都在自動釋放池中,所有的物件最後都會被**。

int main(int argc, char * argv) 

}

2 autoreleasepool 使用的場景

cocoa 框架希望**能在 自動釋放池中執行,否則物件將無法被釋放,導致應用發生記憶體洩露。

for (int i = 0; i < 10000; i ++) 

}

nsthread *thred = [[nsthread alloc]initwithtarget:self selector:@selector(countstart) object:nil];

[thred start];

- (void)countstart

} }}

// 建立1個物件

person *p1 = [[person alloc]init];

p1.name = @"alexander";

//@autoreleasepool

}// **執行到此處 p1 自動被釋放,兩個都被釋放 出現野指標

自動釋放池

自動釋放池是什麼時候建立的?又是什麼時候銷毀的?原題 思考 1,有返回值的類方法建立出來的物件都是autorelease的。autorelease物件出了作用域後,就會被新增到自動釋放池中。如果largenumber非常大,有可能在乙個for中就把自動釋放池填滿,記憶體消耗非常大!2,解決方案 在f...

自動釋放池

autorelease本質上就是延遲呼叫release方法 autorelease物件什麼時候釋放?引用計數為0的時候才會釋放,不是出了pool就釋放 在一些很消耗記憶體的迴圈呼叫的場景下有時需要手動干預autoreleased物件的釋放時機,不然會導致記憶體暴增,最終導致程式崩潰 nsthread...

自動釋放池NSAutoReleasePool

nsautoreleasepool用於支援coco的引用計數記憶體管理 使用arc時 nsautorelease pool nsautoreleasepool alloc init pool release 是否使用arc都可以,效率更高 aurorelease addobject addobjec...