私は iPhone SDK 3.0 を使用していますが、これは、c およびメモリ管理がどのように機能するかについての一般的な誤解だと思います。
このようにviewWillAppearメソッドをオーバーライドしました
@implementation MyViewController
- (void)viewWillAppear:(BOOL)animated {
NSArray *items = [NSArray arrayWithOjbects:self.searchButton, self.trashCan, nil];
[self.bottomBar setItems:items animated:YES];
}
// other stuff...
@end
上記のView Controllerから切り替えて元に戻そうとすると、すべてが正常に機能します。
しかし、NSArrayへの参照がbottomBarによって保持されていると思うので、私の傾向は「アイテム」への元のポインタを「解放」することです。しかし、これを実行して (以下のコードを参照)、UIViewController から切り替えようとすると、メモリ管理エラー (-[CFArray count]: 割り当て解除されたインスタンス 0xd5f530 に送信されたメッセージ) が発生します。
- (void)viewWillAppear:(BOOL)animated {
NSArray *items = [NSArray arrayWithOjbects:self.searchButton, self.trashCan, nil];
[self.bottomBar setItems:items animated:YES];
[items release];
}
この場合、アイテムを解放する必要はありませんか? それとも私は何か間違ったことをしていますか?明らかに、経験的な証拠は、私が「アイテム」をリリースすべきではないことを示していますが、なぜそうなのかは私には明らかではありません.
情報/「ポインター」をありがとう!