3

나는 objetive C에서 몇 가지 것을 코딩하고 있었다. .. 그러나 나는 아직도 그것을 얻지 않는다, 나는 모릅니다/대의원이 무엇인지 전혀 모른다.델리게이트 란 무엇입니까?

아마도 내 주요 프로그래밍 언어는 C++이고 Java ... 아마도 알 수 없습니다.

나는 영어 설명을 찾는 웹을 검색하지만, 내가에서 영어를 :)

답변

3

을 대리자는 C 프로그래머가 콜백을 부르는 무리를 구현하는 객체의 인스턴스입니다 해달라고하지만 것 같아 객체 지향적 인 방법. 대부분의 새로운 개념과 마찬가지로 이름이 바뀌고 난독 화 된 오래된 컨벤션입니다.

There are some nice examples here on wikipedia.

+0

C++이나 Java로 델리게이트 할 수없는 이유는 없습니다 –

+0

그래서 myO와 같은 일을 할 때 bject.delegate = myDelegateObject, 정확히 뭐하는거야? – Artemix

+1

정보를 제공해야하거나 특정 이벤트가 발생할 때마다 myDelegateObject에 의해 구현 된 메서드를 호출하도록 myObject에 지시합니다. 이러한 이벤트는 myObject 클래스의 문서에 문서화되어야합니다. myDelegateObject는 다른 메소드를 가질 수 있으며 myObject가 델리게이트로 필요로하는 것 이상의 다른 일을하도록 설계 될 수 있습니다. –

2

객관적-C에서, 대표는 또 다른 목적은 특정 기능을 위해 의존 할 수있는, 특정한 프로토콜을 따르는 것을 목적으로한다. 다른 언어의 위임과는 다른 개념이며 용어가 동일하기 때문에 혼동을 줄 수 있습니다.

여기에 내가 목표 - C 프로그래밍을 시작했을 때 나는 오히려 유용하다고 기사는 다음과 같습니다

http://developer.apple.com/mac/library/documentation/General/Conceptual/DevPedia-CocoaCore/Delegation.html

0

나는 "함수에 대한 포인터"로 대의원을 생각하고 싶다. 이것은 C 일로 돌아가지만 아이디어는 여전히 유지됩니다.

아이디어는 코드 조각을 호출 할 수 있어야하지만, 호출 할 코드 조각은 런타임까지 알 수 없다는 것입니다. 그래서 당신은 그 목적을 위해 "델리게이트"를 사용합니다.

개체가 요청을 받으면 개체는 요청 자체를 처리하거나 요청을 두 번째 개체로 전달하여 작업을 수행 할 수 있습니다. 개체가 요청을 전달하기로 결정하면 개체가 두 번째 개체에 요청을 처리하는 책임을 전달했다고 말합니다.

대리자 개체는 해당 개체에서 무언가가 발생했을 때 다른 개체가 참조하는 개체입니다. 예를 들어, 차에 무슨 일이 생기면 수리공이 대표자입니다. 당신은 당신의 수리공에게 가서 당신을 위해 차를 수리 해줄 것을 요청합니다. (어떤 사람들은 차를 직접 수리하기를 좋아하지만 어떤 사람들은 그들 자신의 대리인입니다)

코드를 실행하고 싶지 않습니다. 프로그램을 실행 한 후 이벤트가 발생할 때마다 해당 코드를 실행하려는 프로그램을 실행 한 후

대리자가 없으면 사용자 인터페이스 프로그래밍이 불가능합니다. 사용자가 이벤트를 만들 때마다 코드를 실행하기 때문에 버튼을 클릭하고 텍스트 상자에 입력하고 드롭 다운 목록 항목을 선택하는 등