Wie zu verwenden NSWindowController zu zeigen, ein Fenster in der standard-Anwendung?

Ich habe eine neue leere standard-Anwendung mit Xcode-Vorlage. Entfernt das Fenster im Hauptmenü.xib und ich erstellte eine neue, angepasste NSWindowController Unterklasse mit einem xib.

Wurden Sie mit dem Namen "WYSunFlowerWindowController.h" und "WYSunFlowerWindowController.m".

Und ich anfügen, dann wird die init-Funktion wie folgt:

- (id)init
{
    NSLog(@"init()");

    return [super initWithWindowNibName:@"WYSunFlowerWindowController" owner:self];
}

Und meine WYAppDelegate.m-Datei ist wie folgt:

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];
}

Und ich habe das problem, dass das Fenster kann nicht zeigen, dass es selbst nachdem ich die app starten. Wer kann mir sagen, warum? Ist irgendetwas falsch mit meinem code?

Ich bin ein Neuling in Objective-C und cocoa. Also ich denke, dass ich vielleicht einen dummen Fehler, dass ich es nicht herausgefunden habe.

UPDATE:

Hier ist mein Projekt Quelle. Bitten schauen und mir helfen, herauszufinden, was ist mein Fehler。

https://dl.dropbox.com/u/3193707/SunFlower.zip

Hast du ARC aktiviert? Ich habe festgestellt, dass mit ARC das controller-Fenster wird freigegeben, es sei denn, ich mache es eine Eigenschaft des App Delegate (ich bin sicher, es gibt andere Wege, dies zu tun).
Ich bin mit der ARC. Ich mache die windowController als ein statisches Feld der AppDelegate-Klasse. Ich denke es wird nicht freigegeben, bis die app beendet wird.

InformationsquelleAutor morphinewan | 2012-09-19

Schreibe einen Kommentar