2010-06-21 3 views
1

나는 아이폰 개발을 배우기 시작했다. 저는 코코아 개발 프레임 워크에 대해 읽었으므로 몇 가지 주요한 개념이 뒤적 거리며 조금 혼란 스럽습니다. 나는 올바르게 이해하고 약간의 설명을 얻고 싶습니다.코코아/아이폰 dev-target/액션 메커니즘

대의원 - 기본적으로 전략 설계 패턴입니다. 클래스 위임자와 데이터 소스 (위임자와 같은 객체이기도 함)를 설정하고 나중에 위임 객체의 호출 메서드를 설정합니다.

알림 - 기본적으로 옵저버 디자인 패턴. 위임자는 모든 위임 객체 알림에 자동으로 등록됩니다.

대상/액션 -이 부분은 대부분 혼란 스럽습니다. UI 개체에 대해 "SetAction"및 "SetTarget"메서드가 있습니다 UI 개체와 파일 소유자 사이에 선을 긋고 IB를 사용하여 메서드를 연결하면 이해할 수 있습니다. 메서드는 작업이며 파일 소유자가 대상입니다. 모든 UI 메서드 (이벤트)가 동일한 targer로 전달되어야한다는 의미입니까? (Selector 나 다른 인수와 비슷한 것을 허용하지 않는 SetTarget 메서드 만 있으므로) 한 번에 하나의 작업 (SetAction 함수가 의미하는대로)이있을 경우 여러 메서드 사이의 선을 한 파일 소유자로 늘리는 방법은 무엇입니까? 이 메커니즘의 작동 방식을 이해하고 싶습니다

감사합니다.

+1

코코아 기초 가이드에는 디자인 패턴이 코코아 개념과 어떻게 상응하는지 전체 장이 있습니다. http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CocoaDesignPatterns/CocoaDesignPatterns.html#// apple_ref/doc/uid/TP40002974-CH6-SW6 –

+0

적절한 "IBAction"메소드가있는 객체에 작업을 연결할 수 있습니다. 일반적으로 이것은 파일의 소유자이기도 한 뷰 컨트롤러입니다. –

답변

3

대리인 - 기본적으로 전략 디자인 패턴입니다.

동의하지 않습니다. 전략 패턴은 위임을 사용하지만 Cocoa가 위임으로 이해하는 것 이상을 포함합니다. Gang of Four 책을 가지고 있다면 : 소개에서 위임에 대해 논의합니다 (20-21 페이지). 하지만 기본적으로 옳은 것 같습니다. 위임 객체는 대리자의 메서드를 호출합니다.이 메서드는 무언가 (상태 변경, 이벤트)를 알리거나 대리자에게 데이터를 요청하거나 진행할 방법을 요청합니다. 중요한 것은 위임 및 위임 객체는 느슨하게 결합 된 것입니다. 위임 객체를 구현할 때 위임자 클래스를 신경 쓸 필요가 없습니다.

목표/조치 -이 부분은 대부분 혼란 스럽습니다. setTarget:setAction: 및 방법을

개체는 보통 (: 단일 탭 하나 개의 이벤트에 응답 등 UIBarButtonItem) 단일 액션/이벤트를 갖는다. 그렇지 않으면, 클래스는 다른 이벤트에 대한 다른 목표/조치 설정을 지원해야합니다. 예를 들어, UIControl 및 그 서브 클래스를 참조하십시오. 여기서 대상/작업 쌍을 -addTarget:action:forControlEvents:으로 할당하고 서로 다른 이벤트에 대해 여러 대상을 할당 할 수 있으며 동일한 이벤트에 대해 여러 대상을 지정할 수도 있습니다.

+0

좋습니다. 그러나 알림이 알림 센터를 통과한다는 사실 외에도 대상/동작이 관찰자 패턴 (또는 코코아의 경우 알림)과 다른 경우 모든 제어 클래스가 관찰 된 클래스로 작동 할 수 있습니까? – Idan