2009-11-24 12 views

답변

6

대리인은 개체입니다. 대리자 메서드는 대리자 개체가 구현할 것으로 예상되는 메서드입니다. 일부 대리자 메서드는 필요하지만 일부 메서드는 필요합니다. IOS에서는 대부분의 대의원이 Objective-C 프로토콜을 준수해야합니다. 프로토콜 선언은 어떤 메소드가 선택적이고 필요한지를 알려줍니다.

5

대리인 단순히 다른 오브젝트에 대한 참조 및 위임 방법 대리자 인 방법이다.

대리자 메서드은 일반적으로 호출자 매개 변수 중 하나 인 발신자를 사용하는 콜백 메커니즘을 구현합니다.

42

설명하기는 어렵지만 대리인은 다른 개체를 대신하여 메서드를 수행합니다. 표보기는 목록에서 항목을 선택할 때 수행 할 작업을 알지 못합니다. 대신, 델리게이트 객체에게 질문을해야만합니다. 특히 didSelectRowAtIndexPath입니다. tableview가 알고있는 유일한 정보는 사용자가 탭한 섹션과 행입니다. 따라서 테이블 뷰는 본질적으로 "이봐 요, 사용자가 섹션 0의 Row 4를 탭했습니다."라고 말함으로써 델리게이트 객체에이 정보를 제공합니다.

대리자 개체는 didSelectRowAtIndexPath 메서드를 찾아 내부에서 코드를 실행합니다.

많은 개체에 대해 많은 대리자 메서드가 있습니다. 예를 들어, 텍스트 필드 객체는 자체적으로 아무 것도 할 수 없습니다. 대신 대리자를 사용하여 작업을 수행합니다. 화면 키보드에서 Enter 키를 누르면 텍스트 필드가 대리자 객체에 특정 메서드 textFieldShouldReturn을 수행 할 것을 요청합니다. 텍스트 필드에 대해 설정된 대리자에 textFieldShouldReturn 메서드가 없으면 텍스트 필드에서 Enter 단추를 눌렀을 때 수행 할 작업을 알 수 없습니다.

의미가 있습니까?

+1

많은 도움이되었습니다. 정말 고마워! –

+0

정말 대단한 설명입니다. 저는 대표자 개념을 설명하기 위해 연수생에게 동일한 예를 들어 줄 것입니다. –

+0

좋은 답변 ... – konyv12

0

모든 iOS 앱은 위임을 사용합니다. 심지어 기본적인 것들. 그들이 제공하는 코드로 이미 사용 가능합니다. 다른 언어에서는 상속과 같은 것을 사용할 것입니다.

현실 세계와 마찬가지로 대리인은 누군가/무언가 또는이 경우 개체를 나타냅니다.

예를 들어 UI 개체를 사용하면 이미 작업을 수행하는 메서드가 있습니다. 하지만 그들은 당신의 viewController (객체/커스텀 클래스)에 연결될 수 있고 당신의 객체에 책임을 위임 할 수 있습니다.

유의해야 할 몇 가지 사항이 모두 위임 프로토콜을 사용하여 수행

  1. .
  2. 자발적입니다. 그래서 당신의 사물은 대의원이되기를 선택합니다.
  3. 위임자 프로토콜을 살펴보고 해당 방법을 구현하십시오. 일부는 선택 사항이고 일부는 필수입니다.
  4. 위임 개체가 개체에 연결되어 있는지 확인하십시오.
+0

당신은 너무 가깝지만, 당신의 말씨가 조금 개선 될 것이라고 생각합니다. 저는 대리자가 객체 자체가 스스로 할 수없는 것들에 사용된다고 말하는 것이 낫다고 생각합니다. UITableView는 테이블을 관리하고 그려주는 클래스이지만, 그릴 행 수, 행 내용 등을 알기 위해 델리게이트가 필요하기 때문에 모든 것을 자체적으로 수행 할 수는 없습니다. –