要么调用AppDelgate,要么调用ViewController

时间:2015-09-30 11:40:09

标签: objective-c macos viewcontroller appdelegate

我想要两者我的AppDelegate和我的ViewController在启动时被调用(如预期的那样)。

仅调用ViewController时:

的main.c

int main(int argc, const char * argv[]) {
    return NSApplicationMain(argc, argv);
}

调用AppDelegate且视图控制器不是。

的main.c

#import "AppDelegate.h"

int main(int argc, const char *argv[])
{
    NSArray *tl;
    NSApplication *application = [NSApplication sharedApplication];
    [[NSBundle mainBundle] loadNibNamed:@"ViewController" owner:application topLevelObjects:&tl];

    AppDelegate *applicationDelegate = [[AppDelegate alloc] init];      // Instantiate App  delegate
    [application setDelegate:applicationDelegate];                      // Assign delegate to the NSApplication
    [application run];                                                  // Call the Apps Run method

    return 0;       // App Never gets here.
}

我认为我的问题是, main.c 的第二次尝试是......

NSApplication *application = [NSApplication sharedApplication];
        [[NSBundle mainBundle] loadNibNamed:@"ViewController" owner:application topLevelObjects:&tl];

未按预期工作。我在哪里实际设置了'Nib'在IB?

有什么问题?

1 个答案:

答案 0 :(得分:0)

你有这种困惑......你应该仔细看看我在这里的另一个答案:Other Answer

你的第一个main.c示例是完全错误的。你的第二个main.c,它更接近我给出的例子,但是你正在调用 viewController ,你应该引用MainMenu nib,就像我的例子一样。

这一行错了:

 [[NSBundle mainBundle] loadNibNamed:@"ViewController" owner:application topLevelObjects:&tl];

将NIB名称放在那里......这就是为什么方法参数被称为“loadNibNamed”:) - 并摆脱@“ViewController”。

现在如果你想要一个完整的笔尖,那么你真的不需要我的例子。这是为那些真正想要几乎完全编程的人设计的。