Objective c 在nibless AppKit项目中将视图初始化放在何处?

Objective c 在nibless AppKit项目中将视图初始化放在何处?,objective-c,cocoa,appkit,Objective C,Cocoa,Appkit,我目前正在从事一个nibless AppKit项目,我想知道除了主窗口之外,在哪里初始化视图是合适的。以下是我现在拥有的: main.m #import <Cocoa/Cocoa.h> #import "AppDelegate.h" int main(int argc, char *argv[]) { NSApplication *application = [NSApplication sharedApplication]; AppDelegate * appl

我目前正在从事一个nibless AppKit项目,我想知道除了主窗口之外,在哪里初始化视图是合适的。以下是我现在拥有的:

main.m

#import <Cocoa/Cocoa.h>
#import "AppDelegate.h"

int main(int argc, char *argv[])
{
    NSApplication *application = [NSApplication sharedApplication];

    AppDelegate * applicationDelegate = [[AppDelegate alloc] init];

    [application setDelegate:applicationDelegate];

    [application run];

    return EXIT_SUCCESS;
}

如果我现在想向窗口添加子视图,如按钮和窗格,我会在AppDelegate的
init
方法中完成所有这些吗?我是否将NSWindow子类化并在那里更改init方法?我是否应该在
ApplicationIDFinishLaunching
中完成所有这些工作?

我建议您遵循MVC体系结构,为自定义视图创建一个
NSViewController
类。您可以在
-loadView
方法中执行视图初始化

#import "AppDelegate.h"
@implementation AppDelegate

- (id)init {

    self = [super init];
    if (!self) {
        return nil;
    }

    NSRect contentSize = NSMakeRect(200, 300, 300, 100);
    window = [[NSWindow alloc] initWithContentRect: contentSize styleMask:NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask
                                    backing:NSBackingStoreBuffered 
                                    defer:NO];
    window.title = @"NewWindow";
    window.level = NSModalPanelWindowLevel;
    return self;
}

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    [window makeKeyAndOrderFront:self];
}
@end