1

インスタンス化され、いくつかのロジックを実行し、UIAlertView を表示するかどうかを決定するために呼び出される NSObject (MyCustomObject) のサブクラスがあります。MyCustomObject は UIAlertViewDelegate プロトコルを実装して、追加のロジックを実行し、alertView: clickedButtonAtIndex: でいくつかの NSUserDefaults を設定します。myCustomObject を解放するのはどこが適切ですか? ユーザーがアラート ビューのいずれかのボタンをクリックした後に myCustomObject が不要になった場合、myCustomObject は alertView: didDismissWithButtonIndex: ? でそれ自体を解放しても問題ありません。

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
    NSLog(@"I'm UIAlertView's Delegate and I'm releasing myself");
    [self release];
}
4

1 に答える 1

2

カスタムオブジェクトのデリゲートプロトコルを作成し、そのオブジェクトの所有者をそのデリゲートにする方がよいと思います。クラスのアラートビューデリゲートメソッドで、カスタムデリゲートにメッセージを送信して、カスタムオブジェクトの解放を処理できるようにします。

オブジェクトが呼び出し元のコード内で自動解放される場合、または呼び出し元のコードがオブジェクト自体を手動で解放しようとすると、自己解放しようとすると予期しない動作が発生したり、クラッシュする可能性があります。

于 2011-03-29T20:39:03.740 に答える