Создавание приложения Какао без файлов NIB

Да, я знаю, что это идет вразрез с целым принципом MVC!

Однако я просто пытаюсь сделать на скорую руку довольно тривиальное приложение - и я в значительной степени реализовал его. Однако у меня есть проблема...

Я создаю пустой проект, копирую все платформы и устанавливаю настройки сборки - и я получаю ошибки об исполняемом файле или отсутствие исполняемого файла. Настройки сборки все кажутся прекрасными, но это говорит мне, нет никакого исполняемого файла - это создаст +, хорошо работают. Однако это не работает. Нет никакой ошибки ни одного - это просто, кажется, работает очень быстро и чисто! Если я не пытаюсь выполнить GDB, который вежливо говорит мне, что я должен дать ему файл сначала..

Running…  
No executable file specified.  
Use the "file" or "exec-file" command.

Таким образом, я создал приложение Какао, удалил весь материал, в котором я не нуждался (то есть, MainMenu.xib файл..), и теперь я могу скомпилировать свой код отлично. Однако это умирает, жалуясь, что это

"Не мог загрузить файл пера: MainMenu, выходя"

Я прошел Символы Проекта и вижу, что код на самом деле полагается на файл NIB в большой степени, даже если Вы не касаетесь его мудрый кодом. (MVC снова я предполагаю..)

Существует ли простой способ скомпилировать, что Вы кодируете, нет добавил файлы NIB, просто код, который Вы пишете и платформы, которые Вы добавляете? Я предполагаю, что это был бы пустой проект, но мой опыт говорит мне иначе?!

19
задан Jonathan Leffler 8 September 2013 в 18:45
поделиться

4 ответа

Конечно, вы можете написать просто код и не использовать Interface Builder.

Проверяли ли вы Info.plist? По умолчанию там есть запись для MainMenu.xib, и, возможно, именно на эту ссылку он жалуется.

11
ответ дан 30 November 2019 в 01:48
поделиться

Проблема может заключаться в том, что вы все еще вызываете NSApplicationMain в своей функции main main.m ). Если вы не загружаете перо, такое как MainMenu.nib , вам, вероятно, придется отключить вызов NSApplicationMain и написать свой собственный код в main ] для запуска приложения.

7
ответ дан 30 November 2019 в 01:48
поделиться

Не используйте NSApplication и NSApp ...

Вы просто должны указать класс, который реализует протокол UIApplicationDelegate :

UIApplicationMain(argc, argv, nil, @"Name of your class");
-3
ответ дан 30 November 2019 в 01:48
поделиться

Это метод, который я использую в своих приложениях. Извините за форматирование, надеюсь, вы сможете разобраться. Не знаю, как здесь отключить автоформатирование.

Конечно, в этом примере не будет функционирующего главного меню, это слишком много кода, чтобы я мог писать в таком посте: 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;
}
34
ответ дан 30 November 2019 в 01:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: