2009-06-14 2 views
7

Cocoa를 작성하고 해당 콜백에 사용할 대리자와 하나 이상의 선택기를 허용하는 클래스 메서드를 구현할 때 용어가 "위임자"와 "선택자"에서 "대상"및 "동작"으로 변경됩니까? 더 중요한 것은 "위임"은 내 수업이 으로 전화를 걸 때만 가능하지만 내 수업이 일 때으로 전화를 걸 때가 아닌가?델리게이트/선택기와 대상/액션간에 차이점이 있습니까?

답변

12

대표자는 보통 선택자 대신 Protocols을 사용하여 구현됩니다. 이 방법은 클래스간에 의사 소통을하는보다 공식적인 방법이며 필요할 수있는 방법이 여러 개있을 때 주로 유용합니다.

대상/액션은 일반적으로 "이벤트 같은"상황에 대응하는 데 사용됩니다, 등 클릭, 타이머 발사로

NilObject의 대답에 정교하게
+0

나는 지금 그것을 얻을 - 내가 잘못을하고 있어요. 그게 나에게 혼란 스러울거야. :) "methodName not in protocol"오류를 다루는이 페이지는 도움이되었습니다. 나는 거의 즉시 만났습니다. http://www.mobileorchard.com/idprotocol-retainrelease-and -protocol-inheritance / –

3

, 대표는 일련의 프로토콜을 통해 구현됩니다 표준화 된 방법들. 동일한 클래스가 각각 동일한 대리인을 공유하는 객체가 여러 개인 경우 보낸 사람을 구분할 수 없습니다. 그러므로 당신은 - (void) delegateCallback : (id) 보낸 사람이 보낸 사람의 포인터를 사용하여이 연결을 만들 수 있음을 알 수 있습니다.
송신자에 대한 참조가 속성 또는 전역 변수로 필요하므로이 옵션을 해제하기 전에 개체 속성을 nil로 설정할 수 있으므로 개체를 수동으로 해제하는 경우 가비지 포인터).

선택기 메서드를 사용하여 콜백 메서드를 전달할 수도 있습니다.이 기술은 : (id) 보낸 사람과 비교할 때 참조가 필요하지 않으므로 좋은 방법입니다. 메서드 콜백을 사용할 수 있습니다. 초기화하는 각 객체. 반대로, 참조 부족은이 객체를 해제하면 속성을 nil로 설정할 수 없음을 의미합니다.

1

디자인 레벨에 차이가 있다고 생각합니다.

몇 가지 작업을 전문으로하는 구성 요소를 살펴 보겠습니다. DelegationtargetAction은 모두 Google 구성 요소와이를 사용하는 개체 간의 통신 (일부 형식)을 용이하게합니다.

보통 어떤 형태의 통신이 필요한지는 Target Action 또는 Delegation을 사용할지를 정의합니다.

1. 무엇이 의사 전달되고 있습니까? 통신이 제어 (이벤트, 상태 등)

위임 훨씬 더 유연하고 다양한 어플리케이션을 갖는다 한정 때

대상 작업에 더 적합하다. 따라서 대표단을 사용하여 데이터을 두 개체간에주고받을 수 있습니다.

지금까지 내가 목표 행동을 본 적이 어떻게

2. 대부분 매니페스트 1-방법 통신 I 자신이 방법을함으로써 2 웨이 통신을 수행했습니다 위임와

그 값을 반환합니다.

0
Target - the object which is going to respond for your action. 
Action - the method which is triggered by your action 
Delegates - Majorly used for callback mechanism, implemented using "@protocols". 
Selector - also can be used as callback method:

예 :

SEL mySelector = @selector(myTimerCallback:); 
    [NSTimer scheduledTimerWithTimeInterval:30.0 target:obj selector:mySelector userInfo:nil repeats:YES]; 
관련 문제