自動開放プールプールの簡単な使い方は以下です。
#import <Foundation/NSObject.h> #import <Foundation/NSAutoreleasePool.h> //自動開放プール #import <stdio.h> /***********/ /* Class A */ /***********/ @interface A : NSObject { } - (void) dealloc; @end @implementation A - (void) dealloc { printf("I'm released.\n"); [super dealloc]; } @end /**********/ /* main */ /**********/ int main(void) { //自動開放プールの生成 id releasePool = [[NSAutoreleasePool alloc] init]; A *aInstance = [[A alloc] init]; //自動開放プールに登録 [aInstance autorelease]; //自動開放プールの開放。ここで登録した全てのインスタンスにreleaseメッセージが送信される。 [releasePool release]; return 0; }
以下、実行結果。
I'm released.
自動開放プールはNSAutoreleasePoolとして定義されています。使い方としては、NSAutoreleasePoolはインスタンス生成し、メモリの開放を行いたい所(たいていは何処かのスコープを抜ける所だと思いますが)で自動開放プールをreleaseすることで開放処理が行われます。
自動開放プールにインスタンスを登録するには、生成したインスタンスに対して「autorelease」メソッドを呼び出すことで登録を行います。autoreleaseメソッドはNSObjectに定義されています。
0 件のコメント :
コメントを投稿