Cocoa 获取主窗口

Cocoa 获取主窗口,cocoa,mainwindow,Cocoa,Mainwindow,我想创建如下3个窗口: NSWindow *win1 = [[NSWindow alloc] initWithContentRect:rect1 styleMask:uiStyle backing:backingStoreStyle

我想创建如下3个窗口:

NSWindow *win1 = [[NSWindow alloc] initWithContentRect:rect1
                                             styleMask:uiStyle
                                               backing:backingStoreStyle
                                                 defer:NO];
将其中一个设置为主窗口,然后获得主窗口,但我总是得到
nil

[win1 makeKeyAndOrderFront:win1];
[win2 makeKeyAndOrderFront:win2];
[win3 makeKeyAndOrderFront:win3];
[win2 makeMainWindow];
所有这些都是零:

NSLog(@"%@", [app mainWindow]);
NSLog(@"%@", [win1 isMainWindow]);
NSLog(@"%@", [win2 isMainWindow]);
NSLog(@"%@", [win3 isMainWindow]);

我试过你的密码。它确实返回一个实例化的NSWindow对象。我一点也没得到零分。你们能不能在代码段中添加更多的上下文

其次,在IB中创建窗口更容易管理。第三,在传递消息
makeMainWindow
之前,选中
-(BOOL)canBecomeMainWindow


如果您想以编程方式创建自定义窗口,我建议您在MainMenu.xib中创建一个窗口。获取它的IBOutlet,例如
窗口
。然后创建windows win1、win2等,然后使用
addChildWindow
将其作为子窗口添加到
窗口中;请解释你为什么投了反对票。这对我来说似乎是个合理的问题。您不应该使用
%@
格式记录
[NSWindow isMainWindow]
的结果,因为它是
BOOL
,而不是对象。改为使用格式
%d
%u
。我只是在这里记录结果信息,是的%d或%u更好,但我也得到了0,所以我在这里问它。@Andrew Dufresne嗨,你是如何得到对象的?是win2吗?在这里,我想在命令行中编写这些代码,并测试主窗口。谢谢你的评论。@Frank看看这个。它包含以编程方式创建NSWindow所需的代码。