我使用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