主にFlashのガベコレで脳が弛緩してる、ゆとりiPhoneプログラマ向けのメモリ管理術。しち面倒なRetainCountの管理を30秒で解決するよ。
1:とりあえず NSMutableDictionary を1個作る。このDictionaryはプロパティとして保持する。
2:alloc / init でインスタンスを作るときは、[[[ClassName alloc]init]autorelease] と必ずオートリリースをつける。
3:[NSString stringWith〜] のように、allocとinitを経ずにインスタンスを作る場合は、自分で勝手にretainをしない。
4:作成したインスタンスは持続的に必要な場合、NSMutableDictionary に突っ込む。
5:必要なくなったインスタンスは、NSMutableDictionary から remove する。
こうすると、全てのインスタンスはDictionaryに保持されている限り存在し、Dictionaryから外された後適当なタイミングで解放される為、あたかもiPhoneでガベージコレクションが使えるかのような感覚でコーディングできます。
原理としてはDictionaryに追加したオブジェクトは内部的にRetain Countが1個追加され、Dictionaryから外されたタイミングでRetain Countが1個減ることを利用しています。インチキっぽい技ですが、アプリの規模が小さい場合は、大分ラクチン。 removeAllObjectsでDictionaryの中身をすっとばせば、そのままAutoReleasePoolの代用品としてまで使えます。
ObjCをやるなら、ちゃんとRetainを抑えることに超したことはないのですが、flashからiPhoneに進出してきたにわかプログラマな僕は、ObjCに慣れるまでかなりお世話になりました。正直今でもたまに使ってます。