Objective-C學習之旅(六)----內存管理4----自動釋放池


一、O-C當中的內存釋放,並不是像java/.net那樣有一個自動的釋放池,開發人員不用去關心有關內存釋放的問題,O-C里面的自動釋放池比c語言的手動內存管理要好一些,但是相對於java/.net來說又弱一些,所以說O-C當中的釋放屬於半自動的釋放池。

二、什么是自動釋放池

  1、Autorelease pool

  自動釋放池(Autorelease pool)是OC的一種內存自動回收機制,可以將一些臨時變量通過自動釋放池來回收統一釋放

  自動釋放池本事銷毀的時候,池子里面所有的對象都會做一次release操作

  2、autorelease

  任何OC對象只要調用autorelease方法,就會把該對象放到離自己最近的自動釋放池中(棧頂的釋放池)。

三、如何創建一個自動釋放池

//ios5.0新方式

@autoreleasepool

{

}

//ios5.0之前的老方式

NSAutoreleasePool *pool=[[NSAutoreleasePool alloc]init];

[pool release];

 

四、自動釋放池如何釋放對象內存

  黃金法則:如果對一個對象使用了alloc,[mutable]copy,retain,那么必須使用相應的release或者autorelease.

五、自動釋放池棧式結構管理

自動釋放池原理:

自動釋放池的原理類似於一個數組的原理,我們每調用一個autorelease就會有個對象掛到內存中去,系統里面就會根據這個池子銷毀的時候把池子里面的內容全部銷毀。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM