Protocol/Delegate
この問題に使用することをお勧めします。
クラスのデリゲート プロトコルを宣言する必要があります。クラス Foo のデリゲート プロトコルとインターフェイスの例は、次のようになります。
@プロトコル MyClassDelegate
// Required は、デリゲートを使用したい場合に // 実装する必要があることを意味します。@required // 別のクラスから呼び出したいメソッド。- (void)タスク完了:(BOOL)完了; @終わり
@interface MyClass : NSObject { // コンパイル時にどのような種類のクラスが採用されるかわからないため、これは id id デリゲートです。}
@property (nonatomic, assign) id デリゲート;
- (無効) タスク完了;
- (void)doSomeTask;
複雑なプロジェクトがあり、クラス間に多くのリンケージを作成したくないとします。その場合、このような委譲が最適な実装方法になります。関数ポインターとコールバックを使用するようなものですが、通信は双方向で簡単に行われます。私たちのプロトコルを採用し、実際にクラスで使用する時が来ました。
myClass = [[MyClass alloc] init];
// Very important. If we don't let myClass know who the delegate
// is we'll never get the protocol methods called to us.
[myClass setDelegate:self];
これで、別のクラスからメソッドを呼び出すことができます。これがお役に立てば幸いです。