-7

ここで xcode iOS プログラミングに関するいくつかの質問をざっと見てみましたが、「blabla のデリゲートとして」次のようなことを言う人がますます増えているのを見てきました。

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
    currentLocationAnnotation = [annotation retain];
}

しかし、これが何を意味するのか、どこに配置する必要があるのか​​ を理解していないため、.mファイルに配置すると機能せず、AppDelegate.mに配置すると機能しません。それも機能しません。

助けてください :)

4

3 に答える 3

0

あなたのコードでは、これはカスタムデリゲートであり、カスタムデリゲート内に実装されたメソッドを使用できるヘルパーオブジェクトのように機能することを意味します。

于 2013-10-26T13:19:49.453 に答える
0

これは、指定されたプロトコルを確認するオブジェクト (デリゲート) を登録し、他のクラスの別のインスタンスを登録して、デリゲートにいくつかを実行させたいときに最初のオブジェクト「プロトコル メソッド」(デリゲート メソッド) を呼び出す設計パターンです。仕事。これは通常、オブジェクトがその作業の一部を「外部委託」したい場合に、不要なサブクラス化を避けるために使用されます。

于 2013-10-26T14:37:33.680 に答える
-1

最初はちょっと手に入りにくいです。クラスのデリゲートは、そのクラスのイベントのハンドラーのようなものです。たとえば、マップ ビュー クラスの場合、デリゲート (カスタム クラスなど) を設定し、カスタム クラスでハンドラーの実装を開始します (必ずしもイベントを処理する必要はありません。たとえば、テーブル ビューはそのデリゲートにどのように処理するかを尋ねます。多くの行、高さなど)。たとえば、投稿したコード例では、マップ ビューはデリゲートに、パラメーターとして送信している注釈オブジェクトのビューを返すように要求しています。適切なオブジェクトを返すには、クラスにロジックを実装する必要があります。

英語で言えば、メールのようなものだと考えてください。 「こんにちは、私の代理人、あなたの仕事の一環として、私が下に添付している注釈のビューを私に与えてください。ありがとう、マップビュー.」

もちろん、デリゲートからの即時の応答が必要であり、「下に添付」は「注釈」パラメーターです。それが役に立てば幸い。

于 2013-10-26T13:14:56.410 に答える