アーロンヒレガスによるMacOSX用Cocoaプログラミングの第8章からこのプログラムを実行すると、エラーが発生します。プログラムは、テーブルビューをアレイコントローラーにバインドします。配列コントローラーのsetEmployeesメソッドで、
-(void)setEmployees:(NSMutableArray *)a
{
if(a==employees)
return;
[a retain];//must add
[employees release]; //must add
employees=a;
}
この本には、2つのretainステートメントとreleaseステートメントが含まれておらず、新しい従業員を追加しようとするとプログラムがクラッシュします。グーグルした後、プログラムのクラッシュを防ぐために、これら2つの追加する必要のあるステートメントを見つけました。ここでのメモリ管理がわかりません。に割り当てa
ていemployees
ます。割り当てを解除しないのに、なぜ保持する必要がa
あるのですか?employees
最後の代入ステートメントで使用する前にリリースできるのはなぜですか?