Objective-C のメモリ管理に問題があります。オブジェクトを割り当て、このオブジェクトへの参照をクラスのメンバーとして格納するメソッドがあるとします。同じ関数を 2 回実行する場合は、新しいオブジェクトを作成して置き換える前に、この最初のオブジェクトを解放する必要があります。関数の最初の行が次のようになっているとします。
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
これは、別の自動解放プールが配置されることを意味します。オブジェクトを割り当てるコードは次のとおりです。
if (m_object != nil)
[m_object release];
m_object = [[MyClass alloc] init];
[m_object retain];
問題は、メソッドの最後の行を実行するとプログラムがクラッシュすることです。
[pool release];
私は何を間違っていますか?どうすればこれを修正できますか?
よろしく
アラン