私は、VIEW-CONTROL-MODEL構造に委任を広範囲に使用します。通常、CONTROL&MODELオブジェクトはアプリの実行中に保持されるため、問題はほとんど発生しません。
ただし、多くの場合、のインスタンスであるVIEWオブジェクトは、UIViewController
何度も割り当てられ、解放されます。
nil
動的インスタンスが割り当て解除されているときに、動的インスタンスが割り当てられているデリゲートオブジェクトに設定することはUIViewController
、EXC_BAD_ACCESSエラーを回避する方法を知っている1つの方法です。
ただし、私がいつも使用している場合でも:
if ([delegate respondsToSelector:@selector(communityModel:finishedDeletingComment:)]) {
[delegate communityModel:self finishedDeletingComment:succeeded];
}
エラーを防ぐのに最適ではありません。異なるVIEWオブジェクトがCONTROLオブジェクトの1つまたは限られた数のデリゲートを共有している場合、デリゲートが意図せずに別のデリゲートに置き換えられ、EXC_BAD_ACCESSが発生する傾向があります。
デリゲートメソッドを呼び出すときに実際に利用できるかどうかを知るために、デリゲートを管理するためのより良い方法はありますか?
デリゲートのプロパティを設定する通常の方法を変更する必要があるかどうかは疑問です。この方法を使用して、デリゲートのプロパティを設定します。
@property (nonatomic, assign) id<ControlDelegate> delegate;
プロパティの設定について疑問を持って正しい道を進んでいますか?