2011-01-03 6 views
0

この宣言が見つかった場合はchattyアプリが見つかりましたが、どこでも説明が見つかりませんでした。 id delegateid <delegate> chatty app

ここで、RoomDelegateはクラスです。何が起こっているのですか?

答えて

1

に準拠していることを私はUIAlertViewDelegateのように、UIKitの中に共通代理人を通じてだろうこれを説明する最も簡単な方法を見つけます。これは、クラスFooは、一部またはすべてのメソッドを実装して、コンパイラに指示します

@interface Foo : UIViewController <UIAlertViewDelegate> { // ... 

:あなたは、あなたのクラスは、このように、デリゲートに準拠していることを言うでしょう、あなたの.hファイルで

:ここではいくつかのサンプルコードですデリゲート。

あなたがUIAlertViewをインスタンス化

、あなたは、デリゲートは、オブジェクトのためにあるものを指定します。私たちは selfを言っている

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title" 
               message:@"Message" 
               delegate:self 
             cancelButtonTitle:@"Okay" 
             otherButtonTitles:@"Cancel", nil]; 
[alert show]; 
[alert release]; 

注意がデリゲートです。

は今、あなたは、必要なメソッドを実装します:

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex { 
    NSLog(@"%d got clicked", buttonIndex); 
} 

UIAlertViewために、あなたの元の質問に、この背中を結ぶタイプid<UIAlertViewDelegate>のプロパティがあります。

私はかなりObjective-C/iPhone開発の新人です。クラスの「概要」セクションに関連付けられているxxxxDelegateを探すのが非常に便利だと分かったことがあります。あなたは、一般的な行動のために解雇される有用な(他言語の言い方で)イベントを見つける必要があります。

希望すると便利です。

2

代表者は、クラス間で通信する一般的な方法です。たとえば、オブジェクトが特定のアクティビティを完了したときに通知を受けたい場合、クラスをそのオブジェクトのデリゲートとして登録することができます。クラスが必要なデリゲートメソッドを実装している限り、これらは自動的に呼び出されます。

この例では、「id delegate」は、そのクラスがデリゲートオブジェクトへの参照を格納するために使用するインスタンス変数です。 (例:この例では、特定のアクティビティが完了/イベントが発生したときに通知するオブジェクトです)必要なXXXDelegateプロトコル - デリゲートクラスが実装する必要のあるオプションのメソッドおよび必須のメソッドを定義するために使用されます。

2

Delegationは プログラムにおける1つの目的は、の、または別のオブジェクトと連携 に代わって作用するシンプルかつ強力な パターンです。 委任オブジェクトは、 と他のオブジェクト(委任先)への参照を保持し、 には適切な時刻にメッセージ が送信されます。メッセージは 委任オブジェクトが約 を処理しようとしているか、または処理したばかりのイベントの デリゲートに通知します。デリゲートは アプリケーションにおける外観又は状態自体の又は他の オブジェクトを更新することによってメッセージに応答することができる、そして差し迫ったイベントが処理 どのように影響を与えること ある場合には、値を返すことができます。デリゲート の主な価値は、簡単に 複数のオブジェクトの動作を1つの中央オブジェクトにカスタマイズできることです。

参加者はに準拠する必要があります。

id<ADelegatesProtocol> delegate手段は、必要delegateオブジェクトはprotocolADelegatesProtocol

関連する問題