Objective c 正确使用窗口

Objective c 正确使用窗口,objective-c,cocoa,Objective C,Cocoa,我正在开发我的第一个Cocoa Mac OS X程序,想知道显示windows的最佳方法 我将我的AppController/main menu.xib作为主启动窗口,但在启动时取消选中main menu.xib窗口以查看。我这样做是因为在应用程序加载时,我正在检查它们是否已登录。如果没有,我想显示Login.xib窗口,而不是main menu.xib。登录后,我将打开main menu.xib窗口并关闭LoginController我在-(void)applicationdFinishLau

我正在开发我的第一个Cocoa Mac OS X程序,想知道显示windows的最佳方法

我将我的
AppController
/
main menu.xib
作为主启动窗口,但在启动时取消选中main menu.xib窗口以查看。我这样做是因为在应用程序加载时,我正在检查它们是否已登录。如果没有,我想显示
Login.xib
窗口,而不是
main menu.xib
。登录后,我将打开
main menu.xib
窗口并关闭
LoginController
我在
-(void)applicationdFinishLaunching:(NSNotification*)aNotification方法中有此功能

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    NSLog(@"app delegate");
    [[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Defaults" ofType:@"plist"]]];
    BOOL didAuth = NO;
    GTMOAuth2Authentication *auth = [GTMClasses authForService];
    if (auth) {
        didAuth = [GTMOAuth2WindowController authorizeFromKeychainForName:kKeychainName authentication:auth];
    }

    if (didAuth) {
        [[DataClass sharedInstance] setIsSignedIn:YES];
        NSLog(@"Already signed in %@", auth);
        NSLog(@"Window: %@", self.window);
        // SHOW MainMenu.xib here
    } else {
        NSLog(@"Not signed in %@", auth);
        loginController = [[LoginController alloc] initWithWindowNibName:@"Login" owner:self];
        [[loginController window] makeKeyAndOrderFront:self];
    }
}
  • 我看到AppController的
    awakeFromNib
    ApplicationIDFinishLoadingWithOptions
    之前被调用。是否最好将该代码放在我的
    awakeFromNib
  • 如果没有,从AppDelegate打开MainMenu.xib窗口的最佳方式是什么
  • 如果你有更好的方法,会是什么

  • PS:AppController是
    NSObject
    的子类,因此我无权访问
    windowDidLoad
    windowWillLoad
    awakeFromNib
    是第一个执行的方法

    您还可以使用
    alloc
    init
    方法

    你可以把你的登录认证码放在那里,没有任何问题

    您一定已经了解了应用程序的生命周期,以及加载方法的方式和时间


    您是说我应该将代码从上面移动到AppController init或awakeFromNib中?