【发布时间】:2012-09-19 07:14:16
【问题描述】:
我使用 Xcode 模板创建了一个新的空白标准应用程序。删除了 MainMenu.xib 中的窗口,我用 xib 创建了一个新的自定义 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 和可可的新手。所以我想我可能犯了一个我自己无法弄清楚的愚蠢错误。
更新:
这是我的项目源代码。请看看并帮助我弄清楚我的错误是什么。
【问题讨论】:
-
您是否启用了 ARC?我发现使用 ARC 时,窗口控制器会被释放,除非我将其设为 App Delegate 的属性(我确信还有其他方法可以做到这一点)。
-
我正在使用 ARC。我将 windowController 作为 AppDelegate 类的静态字段。我认为在应用程序终止之前它不会被释放。
标签: objective-c xcode cocoa nib nswindowcontroller