먼저, main.m 파일을 지원하는 NSApplicationMain을 주석으로 처리하십시오. NSApplicationMain()은 Info.plist에 언급 된 주 펜촉을로드하므로 건너 뜁니다. 대신, 설치 앱 위임하고 응용 프로그램을 실행합니다 createMainWindow하는 비슷한 전화 기능 : 응용 프로그램의 대리인의 아래 applicationDidFinishLaunching에서, 그리고
int main(int argc, const char * argv[])
{
//return NSApplicationMain(argc, argv);
@autoreleasepool {
NSApplication * application = [NSApplication sharedApplication];
MYAppDelegate* appDelegate = [[MYAppDelegate alloc] init];
[application setDelegate:appDelegate];
[application run];
}
return EXIT_SUCCESS;
}
는
- (void)createMainWindow
{
self.wincon = [[MYCustomWindowController alloc] initWithWindowNibName:@"MainMenu"];
self.window = self.wincon.window; // window property in appdelegate created for single-view app
// Also had to connect About: to application's orderFrontStandardAboutPanel
}
MainMenu.xib의 파일의 소유자 사용자 정의 클래스는해야 응용 프로그램에서 MYCustomWindowController로 전환 할 수 있습니다.
MainMenu.xib에이 예제와 같은 창이 있으면 "참조 콘센트"를 File 's Owner-> 창에 연결해야합니다.
단일보기 응용 프로그램으로 시작한 경우 MainMenu.xib에서 App Delegate 개체를 삭제하십시오. 그렇지 않으면 xib가 응용 프로그램 대리인의 두 번째 인스턴스를 만듭니다. MYAppDelegate.managedObjectContext와 같은 것을 참조하는 경우 이것은 끔찍할 수 있습니다. 응용 프로그램 대리인에 바인딩해야하는 경우에는 delegate.managedObjectContext의 키 경로를 사용하여 응용 프로그램에 바인딩 할 수 있습니다.
왜 이렇게 했습니까? 때로는 내 응용 프로그램이 GUI로 시작되기도하고 때로는 응용 프로그램이 시작되지 않기도합니다.
응용 프로그램의 위임은 NIB 내부에 있으므로 설명 할 수 없습니다. 무엇을 성취하려고합니까? 아마도 또 다른 방법이있을 것입니다. –