Objective-C Language
プロトコルと代理人
サーチ…
備考
プロトコルとデリゲートは、2つの関連していますが異なる概念です。
プロトコルとは、クラスが準拠することができるインタフェースです。つまり、クラスは、リストされたメソッドを実装します。
デリゲートは、通常、プロトコルに準拠した匿名オブジェクトです。
Delegationと呼ばれるDelegateのアプリケーションは設計パターンです。
一方の端には継承という概念があり、サブクラスとそのスーパークラスの間に緊密な結合が作成されますが、 委譲の設計パターンは、この緊密な結合を避けるための代替手段を提供し、匿名の委任オブジェクトに基づいて、
プロトコルと委任メカニズムの実装。
ViewAとViewB 2つのビューがあるとします
インスタンスViewB内部で作成されViewAので、 ViewAにメッセージを送ることができますViewB'sインスタンスが、その逆のために(デリゲート使用するように、我々は委任を実装する必要が起こることViewB'sインスタンスはにメッセージを送ることができViewA )
委任を実装するには、次の手順に従います
ViewBプロトコルをViewBように作成します。@protocol ViewBDelegate -(void) exampleDelegateMethod; @endデリゲートを送信者クラスで宣言する
@interface ViewB : UIView @property (nonatomic, weak) id< ViewBDelegate > delegate; @endクラスViewAでプロトコルを採用
@interfac ViewA: UIView < ViewBDelegate >デリゲートを設定する
-(void) anyFunction { // create Class ViewB's instance and set the delegate [viewB setDelegate:self]; }ViewAクラスでデリゲートメソッドを実装する-(void) exampleDelegateMethod { // will be called by Class ViewB's instance }ViewBクラスのメソッドを使用して、デリゲートメソッドを-(void) callDelegateMethod { [delegate exampleDelegateMethod]; //assuming the delegate is assigned otherwise error }
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow