저는 Mac 프로그래밍을 처음 접했고 문서 기반 응용 프로그램을 만들고 있습니다.문서 기반 코코아 응용 프로그램에서 커플 링 방지?
내 NSDocument
하위 클래스는 NSWindowController
하위 클래스를 만듭니다. 이 윈도우 컨트롤러는 하위 서브 클래스도 두 개 만들었습니다 (NSViewController).
간혹 NSViewController
의보기 중 하나가 변경되면 NSDocument
및/또는 기본 모델 클래스를 알릴 필요가 있습니다. 또한 모델 변경은 모든보기/일부보기에 통보해야합니다.
제 질문은 : 커플 링이 없도록 (또는 최소) 커플 링이 가장 좋은 방법은 무엇입니까? 나는 몇 가지 선택이 있습니다 알고 있지만, 내가하지 프로그래밍 있지만 코코아에 특히 NSDocument
초보자이야 나는 하나가 내 응용 프로그램에 가장 적합한 확실하지 않다 :
KVO. 구현하기 쉽고 멋지게 보이지만 관찰자에게 변경 사실을 알리지 않고 (AFAIK,
self.someProperty = newValue
은 자동으로 관찰자에게 알립니다), 등록해야한다는 사실을 좋아하지 않습니다. 시간이 지나면 바뀔 수있는 속성 이름.알림. 나는 그들이 무엇인지 알고 있으며, iOS 용으로 사용해 왔습니다. 그러나 나는 그들이 관찰자에게 즉시 보내지는 않을 것이라는 점을 어딘가에서 읽었습니다. 사실입니까? 그렇지 않다면 문서 기반 앱에 대한 좋은 접근 방식으로 보입니까?
대리인. 예, 일반적인 조건 (또는 일반적으로 보았던 것)에서 클래스에는 하나의 대리자가 있습니다. 그러나 대리자 배열을 만드는 것은 잘 작동합니다 (방금 테스트했습니다). 여기서 볼 수있는 문제는 대리자에게 루프를 통해 전달해야 할 때마다 메서드에 응답하는지 확인하고 해당 메서드를 호출해야한다는 것입니다.
다른 대안이 있습니까?
알림 *은 즉시 옵서버에게 전송됩니다. –