수색…


비고

의정서대의원 은 2 개의 관련있는 그러나 다른 개념이다 :

프로토콜 은 클래스가 준수 할 수있는 인터페이스입니다. 즉, 클래스가 나열된 메소드를 구현합니다.

대리인 은 일반적으로 프로토콜을 준수하는 익명 개체입니다.

Delegation 이라고하는 Delegate 의 애플리케이션은 디자인 패턴입니다.

한쪽에는 하위 클래스와 상위 클래스 간의 긴밀한 결합을 만드는 상속 개념이 있지만 위임 디자인 패턴은 익명의 위임 객체를 기반으로 훨씬 느슨한 관계를 만들 수있는이 긴밀한 결합을 피하기위한 대안을 제공합니다.

프로토콜 및 위임 메커니즘 구현.

ViewAViewB 두 가지 뷰가 있다고 가정합니다.

의 인스턴스 ViewB 내부에서 생성 ViewA , 그래서 ViewA 메시지를 보낼 수 있습니다 ViewB's 예,하지만 역을 위해 (대표 이용 수 있도록 우리가 위임을 구현해야 할 일이 ViewB's 예를하기에 메시지를 보낼 수 ViewA )

위임을 구현하려면 다음 단계를 따르십시오.

  1. ViewB 프로토콜을 다음과 같이 작성하십시오.

     @protocol ViewBDelegate 
    
    -(void) exampleDelegateMethod;
    
     @end
    
  2. 보낸 사람 클래스에서 대리자 선언

     @interface ViewB : UIView
     @property (nonatomic, weak) id< ViewBDelegate > delegate;
     @end
    
  3. 클래스 ViewA에서 프로토콜 채택

    @interfac ViewA: UIView < ViewBDelegate >

  4. 델리게이트 설정

    -(void) anyFunction   
    {
        // create Class ViewB's instance and set the delegate
        [viewB setDelegate:self];
    }
    
  5. ViewA 클래스에서 위임 메서드 구현

    -(void) exampleDelegateMethod
    {
        // will be called by Class ViewB's instance
    }
    
  6. 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