Да, я знаю, что это идет вразрез с целым принципом MVC!
Однако я просто пытаюсь сделать на скорую руку довольно тривиальное приложение - и я в значительной степени реализовал его. Однако у меня есть проблема...
Я создаю пустой проект, копирую все платформы и устанавливаю настройки сборки - и я получаю ошибки об исполняемом файле или отсутствие исполняемого файла. Настройки сборки все кажутся прекрасными, но это говорит мне, нет никакого исполняемого файла - это создаст +, хорошо работают. Однако это не работает. Нет никакой ошибки ни одного - это просто, кажется, работает очень быстро и чисто! Если я не пытаюсь выполнить GDB, который вежливо говорит мне, что я должен дать ему файл сначала..
Running…
No executable file specified.
Use the "file" or "exec-file" command.
Таким образом, я создал приложение Какао, удалил весь материал, в котором я не нуждался (то есть, MainMenu.xib
файл..), и теперь я могу скомпилировать свой код отлично. Однако это умирает, жалуясь, что это
"Не мог загрузить файл пера: MainMenu, выходя"
Я прошел Символы Проекта и вижу, что код на самом деле полагается на файл NIB в большой степени, даже если Вы не касаетесь его мудрый кодом. (MVC снова я предполагаю..)
Существует ли простой способ скомпилировать, что Вы кодируете, нет добавил файлы NIB, просто код, который Вы пишете и платформы, которые Вы добавляете? Я предполагаю, что это был бы пустой проект, но мой опыт говорит мне иначе?!
Конечно, вы можете написать просто код и не использовать Interface Builder.
Проверяли ли вы Info.plist? По умолчанию там есть запись для MainMenu.xib, и, возможно, именно на эту ссылку он жалуется.
Проблема может заключаться в том, что вы все еще вызываете NSApplicationMain
в своей функции main
(в main.m
). Если вы не загружаете перо, такое как MainMenu.nib
, вам, вероятно, придется отключить вызов NSApplicationMain
и написать свой собственный код в main
] для запуска приложения.
Не используйте NSApplication и NSApp ...
Вы просто должны указать класс, который реализует протокол UIApplicationDelegate :
UIApplicationMain(argc, argv, nil, @"Name of your class");
Это метод, который я использую в своих приложениях. Извините за форматирование, надеюсь, вы сможете разобраться. Не знаю, как здесь отключить автоформатирование.
Конечно, в этом примере не будет функционирующего главного меню, это слишком много кода, чтобы я мог писать в таком посте: P - Извините, проведите небольшое исследование по этому поводу;)
Это должно быть вы начали:
AppDelegate.h
@interface MyApplicationDelegate : NSObject <NSApplicationDelegate, NSWindowDelegate> {
NSWindow * window;
}
@end
AppDelegate.m
@implementation MyApplicationDelegate : NSObject
- (id)init {
if (self = [super init]) {
// allocate and initialize window and stuff here ..
}
return self;
}
- (void)applicationWillFinishLaunching:(NSNotification *)notification {
[window makeKeyAndOrderFront:self];
}
- (void)dealloc {
[window release];
[super dealloc];
}
@end
main.m
#import "AppDelegate.h"
int main(int argc, char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSApplication * application = [NSApplication sharedApplication];
MyApplicationDelegate * appDelegate = [[[[MyApplicationDelegate]alloc] init] autorelease];
[application setDelegate:appDelegate];
[application run];
[pool drain];
return EXIT_SUCCESS;
}