2011-08-31 6 views
4

첫 번째 복잡한 OS X 애플리케이션을 만들었습니다. 이 작업을 수행하면서 NSApplicationDelegate 프로토콜 (Xcode 클래스는 기본적으로 Cocoa 응용 프로그램 용으로 생성 된 클래스, 즉 MyApplicationAppDelegate.m/h)을 구현하는 클래스를 사용하는 방법에 대해 의문을 제기했습니다.NSApplicationDelegate 클래스 디자인

많은 자습서 (및 서적)에서 사람들이 기본 또는 일반 응용 프로그램 작업을 관리하기 위해 AppController 클래스를 만드는 것을 봅니다. 나는 내 일반 작업을 MyApplicationAppDelegate에 직접 추가하고 관리해야하는 모듈에 따라 특정 컨트롤러를 만드는 것을 선호합니다.

예를 들어, I는 MyApplicationAppDelegate 다른 창을 여는 데 사용되는 모든 IBAction (즉 선호 패널을 개방)에 추가 엄격 메인 인터페이스의 특정 모듈/컨트롤러 IBOutlet들과 연결되지 않은 모든 기능. MyApplicationAppDelegate에서 내 응용 프로그램에 사용되는 컨트롤러에 대한 모든 참조를 추가합니다. 그것은 본질적입니다.

저는 이것이 좋은 디자인인지 아닌지 확실하지 않기 때문에 정말로 혼란 스럽습니다. MyApplicationAppDelegate은 다른 목적으로 설계 되었습니까?

나는 코코아의 디자인 패턴에 대해 알고 싶은 모든 제안을 원합니다.

답변

1

Xcode는 기본적으로 Cocoa 응용 프로그램 템플릿에 응용 프로그램 대리자 클래스를 만들지 않는 데 사용됩니다.

애플은 단지 프로젝트 템플릿을 사용하여 <AppName>_AppDelegate 클래스의 자동 생성을 최근에 발표했는데, 아마도 3.2 버전 정도 였을 것입니다.

이전 프로젝트 템플릿으로 만들지 않았기 때문에 많은 이전 서적과 자습서에서 AppController 클래스를 만들었습니다.

메인 컨트롤러 클래스로 <AppName>_AppDelegate을 자유롭게 사용할 수 있습니다. Apple이 템플릿에 템플릿을 추가 한 이유는 많은 개발자가 NSApplicationDelegate 개체를 기본 응용 프로그램 컨트롤러로 사용하고 있기 때문입니다.

코코아의 디자인 패턴에 대해 자세히 알아볼 수있는 훌륭한 자료는 적절하게 Cocoa Design Patterns이라고하는 책입니다.