Во-первых, закомментируйте NSApplicationMain в файлах поддержки -> main.m.NSApplicationMain () загружает основной кончик, упомянутый в вашем Info.plist, поэтому пропустите его.Вместо этого настройте приложение, делегируйте и запустите приложение:
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;
}
Затем в applicationDidFinishLaunching: function делегата приложения вызовите нечто похожее на createMainWindow:
- (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'sПользовательский класс владельца должен быть переключен на MYCustomWindowController из приложения.
Если MainMenu.xib имеет окно, как в этом примере, его «ссылка на выход» должна быть подключена к файлу Owner-> window.
Если вы начали с одного приложения представления, УДАЛИТЕ объект Делегат приложения из MainMenu.xib - в противном случае Xib создаст второй экземпляр вашего делегата приложения.Это может быть ужасно, если вы ссылаетесь на что-то вроде MYAppDelegate.managedObjectContext.Если вам нужно привязать к делегату приложения, вы можете привязать к приложению с помощью ключевого пути Delegate.managedObjectContext.
Почему я это сделал?Потому что иногда мое приложение запускается с графическим интерфейсом, а иногда нет.