私は、VIEW-CONTROL-MODEL構造に委譲を広範囲に使用しています。通常、CONTROL & MODELオブジェクトはアプリの実行中は保持されているため、問題はほとんど発生しません。iosデリゲートが公開されているかどうかを知る方法
ただし、多くの場合、UIViewController
のインスタンスであるVIEWオブジェクトは、割り当てられていて、何度も解放されます。
ダイナミックUIViewController
インスタンスが割り振られているデリゲートオブジェクトに、nil
を設定すると、割り当てが解除されるときに、EXC_BAD_ACCESSエラーを回避する方法がわかります。
しかし、私はいつも使用している場合でも:
if ([delegate respondsToSelector:@selector(communityModel:finishedDeletingComment:)]) {
[delegate communityModel:self finishedDeletingComment:succeeded];
}
それがエラーを防止するために完璧ではありません。別のVIEWオブジェクトがCONTROLオブジェクトの1人または限られた数のデリゲートを共有している場合、代理人が意図せずに別のものに置き換えられる可能性が常に高くなるため、EXC_BAD_ACCESSが発生します。
デリゲートを管理し、デリゲートメソッドを呼び出す瞬間ですか?
デリゲートのプロパティを設定する通常の方法を変更する必要があるかどうかは疑問です。私は、デリゲートのプロパティを設定するには、この方法を使用します。
@property (nonatomic, assign) id<ControlDelegate> delegate;
私はプロパティの設定については疑う右のトラックに行くのだろうか?