0

3 つの異なるクラスがあり、そのうちの 1 つは特定の Web サイトから xml を解析し、他の 2 つは NSXMLParserDelegate プロトコル メソッドを実行しているクラスから情報を受け取ります。私の質問は、別のクラスからプロトコルメソッドを実行するようにクラスに指示するにはどうすればよいですか? または、すべてのインスタンス メソッドまたはクラス全体などを実行します。

助言がありますか?

編集:特定のビューがアクティブなときに、Web サイトから xml 情報を解析します。これを行うには、メッセージを送信するクラスを作成し、そのメソッドを xml パーサー プロトコルから実行して、受信した値を存在するビューに送信するように指示します。

4

1 に答える 1

2

見る方法は2つあります。

デリゲート (B) へのポインターを持つオブジェクト (A) (デリゲートは、プロトコルのメソッドを実装するオブジェクトです) は、プロトコルのメソッドを呼び出すだけで呼び出すことができます。デリゲート (B) の観点から、プロトコルのメソッドを呼び出すのではなく、それらを実装し、他のオブジェクト (A) は、何らかのイベントを通知する必要があるとき、または何らかの情報を要求する必要があるときはいつでもそれらを呼び出します。それがプロトコルの設計目的です。

オブジェクト (A) デリゲートを宣言する場所

id <someKindOfDelegate> delegate;

必要なときはいつでも、プロトコルのメソッドを呼び出します

if (self.delegate)
    [self.delegate someMethod]

(B) 自身をプロトコルの実装者として宣言する必要があります

@interface ObjectB <someKindOfDelegate>

次に、(B) は自身を (A) のインスタンスのデリゲートとして設定します。

ObjectA *object = [[ObjectA alloc] init];
object.delegate = self;

そして最後に (B) プロトコルのメソッドを実装します

- (void)someMethod {
     // do something... I've been called!
}
于 2014-02-07T16:21:50.147 に答える