我使用Xcode模板创建了一个新的空白标准应用程序。删除了MainMenu.xib中的窗口,并使用xib创建了一个新的自定义的NSWindowController子类。如何使用NSWindowController在标准应用程序中显示窗口?
它们被命名为“WYSunFlowerWindowController.h”和“WYSunFlowerWindowController.m”。
我追加然后初始化函数如下图所示:
- (id)init
{
NSLog(@"init()");
return [super initWithWindowNibName:@"WYSunFlowerWindowController" owner:self];
}
而且我WYAppDelegate.m文件是象下面这样:
static WYSunFlowerMainWindowController* windowController = nil;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
// Insert code here to initialize your application
if (windowController == nil) {
windowController = [[WYSunFlowerMainWindowController alloc] init];
}
[[windowController window] makeKeyAndOrderFront:windowController];
}
和我有问题,这个窗口无法显示它是在我启动应用程序后自行完成。任何人都能告诉我为什么?我的代码有问题吗?
我是Objective-C和可可的新手。所以我想我可能犯了一个愚蠢的错误,我无法自己弄清楚。
更新:
这是我的项目源码。普莱斯看看,帮我弄清楚什么是我的错误。
https://dl.dropbox.com/u/3193707/SunFlower.zip
您是否启用了ARC?我发现使用ARC时,窗口控制器会被取消分配,除非我将其设置为应用程序委托的属性(我确信有其他方法可以执行此操作)。 – sosborn
我正在使用ARC。我将windowController作为AppDelegate类的静态字段。我认为它不会被解除分配,直到应用程序终止。 – morphinewan