2013-07-31 3 views
0

그래서 내 응용 프로그램에서 나는 다음과 같은 상황이 있습니다Obj-C의 위임 패턴 - 잘못 했습니까?

BackendCommunicatingClass -> (소유) -> ModelClass -> (소유) -> HomescreenViewController

  • HomescreenViewController이 ModelClass에 대한 대리자입니다.
  • ModelClass는 BackendCommunicatingClass의 대리자입니다. > (소유) - -> HomescreenViewController

    • HomescreenViewController WelcomeViewController에 대한 위임이다

      WelcomeViewController가 :

  • 은 또한 앱이 처음으로 시작하는 경우에,이 있습니다. 필요한 경우

사용자 유형 WelcomeViewController에서 사용자 이름과 암호,이 정보가 BackendCommunicatingClass 모든 방법을 얻을 필요가하고 모든 방법을 다시 WelcomeViewController에 오류를 표시합니다. 지금은 BackendCommunicatingClass가 될 때까지 통신 체인의 각 클래스에 정보를 전달하여 구현했습니다. 결과는 프로토콜 방법의 많은 복제이고 내가 잘못하고있는 것처럼 느낍니다.

당신은 어떻게 생각하십니까?

+0

유효한 대안은 홈보기 컨트롤러에서 보낸 알림을 사용할 수 있습니다. 또는 KVO가 백엔드 컨트롤러에 설정되었습니다. – Leonardo

+0

KVO 란 무엇입니까? 나는 아직도 알림이 정확히 무엇을하는지 이해하지 못합니다. –

+0

KVO는 키 - 값 관측입니다. 그것에 대한 Apple의 설명서를 참조하십시오.알림은 관심있는 모든 사람에게 무언가를 알리는 방법입니다. 이벤트 패턴으로 사용되거나 그렇지 않으면 데이터를 통신하기 위해 서로 연결되어 있지 않은 두 오브젝트에 사용될 수 있습니다. – Jesper

답변

1

글쎄, 내가 가장 명확한 해결책은 아니지만, 코드를 쓰지 않고 프로그램의 목적을 이해할 수있다.

  • 홈 뷰 컨트롤러의 변경 사항을 관찰하면서 백 엔드보기 컨트롤러에서 KVO (Key Value Observing)를 구현합니다. 백 엔드 컨트롤러가 홈 뷰 컨트롤러의 전용 변수 인 텍스트 필드의 변경 사항을 감지하면 즉시 수행해야하는 모든 작업이 실행됩니다.
  • 백 엔드가 끝나면 작업 결과와 함께 NSNotification을 보냅니다. 이러한 사용자 정의 알림을 듣게 만든 홈 뷰 컨트롤러가 반응하여 오류 메시지 또는 다른 스태프를 표시합니다.

복잡한 것처럼 들리 겠지만 KVO 및 알림은 쉽게 구현할 수 있으며 그물에는 문서와 설명서가 많이 있습니다.

+0

내가 찾고있는 사운드가 좋아. 감사! –

0

위임 프로토콜이 제공하는 명확한 1 : 1 매핑이 있고 대리인이 직접 소유 한보기 컨트롤러를 제외하고 UI 항목을 처리하지 않는 경우 위임을 끝까지 전달할 수 있습니다 를 사슬로 설정하고 대리인으로 직접 설정하십시오. 이는 대리자가 다른 목적에 상관없이 다른 개체가 다른 개체와 통신 할 수있게하는 것입니다.

그렇다면 레이어 정책이 얼마나 엄격한 지에 따라 각기 다른 대의원이 있어야 정보를 캡슐화하는 것이 좋습니다.

관련 문제