動的なオブジェクト管理

リファレンスカウンタ

リファレンスカウンタとは、インスタンスが何カ所から参照されているかを示すカウンタである。
allocで生成後にイニシャライザで初期化されたインスタンスのリファレンスカウンタは1になる。リファレンスカウンタはretainで1増加し、releaseで1減少する。
リファレンスカウンタが0になった時点で自動的にdeallocが呼び出されてインスタンスが解放される。ただし、deallocはプログラム内から直接呼び出してはいけない。

インスタンスの自動開放

autoreleaseを使うと、不要になったインスタンスを一時的にまとめておき、後でまとめてreleaseすることができる。ただし、解放したいインスタンスのリファレンスカウンタが1以上の場合は、autoreleaseしていても自動開放プールのインスタンスをreleaseした際に解放されない。

id pool = [[NSAutoreleasePool alloc] init];
/* 任意の処理。不要なインスタンスにautoreleaseメッセージを送る */
[pool release];   /* 解放プールに登録されたインスタンスはここで解放される */