Cocoa를 작성하고 해당 콜백에 사용할 대리자와 하나 이상의 선택기를 허용하는 클래스 메서드를 구현할 때 용어가 "위임자"와 "선택자"에서 "대상"및 "동작"으로 변경됩니까? 더 중요한 것은 "위임"은 내 수업이 으로 전화를 걸 때만 가능하지만 내 수업이 일 때으로 전화를 걸 때가 아닌가?델리게이트/선택기와 대상/액션간에 차이점이 있습니까?
답변
대표자는 보통 선택자 대신 Protocols을 사용하여 구현됩니다. 이 방법은 클래스간에 의사 소통을하는보다 공식적인 방법이며 필요할 수있는 방법이 여러 개있을 때 주로 유용합니다.
대상/액션은 일반적으로 "이벤트 같은"상황에 대응하는 데 사용됩니다, 등 클릭, 타이머 발사로
NilObject의 대답에 정교하게, 대표는 일련의 프로토콜을 통해 구현됩니다 표준화 된 방법들. 동일한 클래스가 각각 동일한 대리인을 공유하는 객체가 여러 개인 경우 보낸 사람을 구분할 수 없습니다. 그러므로 당신은 - (void) delegateCallback : (id) 보낸 사람이 보낸 사람의 포인터를 사용하여이 연결을 만들 수 있음을 알 수 있습니다.
송신자에 대한 참조가 속성 또는 전역 변수로 필요하므로이 옵션을 해제하기 전에 개체 속성을 nil로 설정할 수 있으므로 개체를 수동으로 해제하는 경우 가비지 포인터).
선택기 메서드를 사용하여 콜백 메서드를 전달할 수도 있습니다.이 기술은 : (id) 보낸 사람과 비교할 때 참조가 필요하지 않으므로 좋은 방법입니다. 메서드 콜백을 사용할 수 있습니다. 초기화하는 각 객체. 반대로, 참조 부족은이 객체를 해제하면 속성을 nil로 설정할 수 없음을 의미합니다.
디자인 레벨에 차이가 있다고 생각합니다.
몇 가지 작업을 전문으로하는 구성 요소를 살펴 보겠습니다. Delegation
및 targetAction
은 모두 Google 구성 요소와이를 사용하는 개체 간의 통신 (일부 형식)을 용이하게합니다.
보통 어떤 형태의 통신이 필요한지는 Target Action
또는 Delegation
을 사용할지를 정의합니다.
1. 무엇이 의사 전달되고 있습니까? 통신이 제어 (이벤트, 상태 등)
위임 훨씬 더 유연하고 다양한 어플리케이션을 갖는다 한정 때
대상 작업에 더 적합하다. 따라서 대표단을 사용하여 데이터을 두 개체간에주고받을 수 있습니다.
지금까지 내가 목표 행동을 본 적이 어떻게
2. 대부분 매니페스트 1-방법 통신 I 자신이 방법을함으로써 2 웨이 통신을 수행했습니다 위임와
그 값을 반환합니다.
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];
- 1. "/\((./)\)/"및 "/ \ (([^ \)] *) \) /"사이에 차이점이 있습니까?
- 2. SqlConnection.CreateCommand와 새 SqlCommand간에 차이점이 있습니까?
- 3. 두 문장 사이에 차이점이 있습니까?
- 4. cpython과 파이썬 사이에 차이점이 있습니까
- 5. PHP에서! ==와! =의 차이점이 있습니까?
- 6. 파이썬에서 -1과 False의 차이점이 있습니까?
- 7. 셰이더 언어간에 큰 차이점이 있습니까?
- 8. self.current_user와 @current_user 사이에 차이점이 있습니까?
- 9. 아파치에서 mod_python과 httpd.conf를 설치하는 데 차이점이 있습니까?
- 10. innodb와 XtraDB 사이에 눈에 띄는 차이점이 있습니까?
- 11. 두 가지 JavaScript 패턴간에 차이점이 있습니까?
- 12. XML과 HTML 특수 문자 인코딩간에 차이점이 있습니까?
- 13. ** copy **와 ** addAll ** 사이에 차이점이 있습니까?
- 14. MongoDB에 $ lt/$ gt와 $ ne의 차이점이 있습니까?
- 15. DISTINCT colname과 DISTINCT (colname) 사이에 차이점이 있습니까?
- 16. SQLite에서 SQLiteJDBC 로의 큰 차이점이 있습니까?
- 17. .NET : InvariantCulture와 en-US간에 차이점이 있습니까?
- 18. iPhone4의 흑백 색상 사이에 기능상의 차이점이 있습니까?
- 19. PHP에서 'print'와 'echo'사이에 어떤 차이점이 있습니까?
- 20. on_exit() 함수와 atexit() 함수 사이에 차이점이 있습니까?
- 21. winform과 WPF에서 Resources.resx와 Settings.setting간에 차이점이 있습니까?
- 22. 레일 : 'references : foo'와 'integer : foo_id'사이에 차이점이 있습니까?
- 23. Spring과 Spring.net 사이에 어떤 차이점이 있습니까?
- 24. 쿼리와 관련된 두 질문 사이에 차이점이 있습니까?
- 25. sqlite에서 .quit와 .exit 사이에 차이점이 있습니까?
- 26. Ruby와 Groovy의 블록간에 중요한 차이점이 있습니까?
- 27. ANSI C와 ISO C 사이에 차이점이 있습니까?
- 28. 4.2와 4.3 사이에 UIImageView의 차이점이 있습니까?
- 29. .NET에서 System.Runtime.InteropServices.UCOM * 클래스와 System.Runtime.InteropServices.ComTypes. * 사이에 차이점이 있습니까?
- 30. 이 두 SELECT 문 사이에 차이점이 있습니까?
나는 지금 그것을 얻을 - 내가 잘못을하고 있어요. 그게 나에게 혼란 스러울거야. :) "methodName not in protocol"오류를 다루는이 페이지는 도움이되었습니다. 나는 거의 즉시 만났습니다. http://www.mobileorchard.com/idprotocol-retainrelease-and -protocol-inheritance / –