1

Ich habe eine Menüleiste-basierte Anwendung, die ein Fenster anzeigt, wenn auf das Symbol geklickt wird. Alles funktioniert gut unter Mac OS X Lion, aber aus irgendeinem Grund tritt ein Fehler auf Snow Leopard und früheren Versionen von Mac OS X auf. Immer wenn [TheWindowController window] aufgerufen wird, stoppt die Methode, aber die App läuft weiter. Aus diesem Grund glaube ich nicht, dass das Fenster einfach null ist, es ist irgendwie korrupt.NSWindowController-Fenster?

Ich habe keine Idee, warum das passiert, und wie ich schon sagte, es passiert nur in Mac OS X Snow Leopard. BTW. Ich benutze ARC, wenn das überhaupt wichtig ist.

+0

Wird irgendetwas in das Konsolenprotokoll geschrieben, wenn dies geschieht? Kannst du auch den Code einer Methode zeigen, die gerade aufhört? –

+0

Leider kann ich das Konsolenprotokoll nicht sehen, da ARC auf OS X 10.6 nicht unterstützt wird ... Ich habe noch mehr Suchen durchgeführt, es ist wirklich seltsam. Das Fenster hat kein Problem, solange es kein Element darauf gibt. Wenn ich eine benutzerdefinierte Ansicht hinzufügen, stürzt es ab ... – NSAddict

+1

Ich bin mir nicht sicher, was ARC mit dem Konsolenprotokoll zu tun hat. Starten Sie /Applications/Utilities/Console.app. Wählen Sie in der Protokollliste Konsolenmeldungen aus. Versuchen Sie, Ihre App auszuführen und zu sehen, was in das Konsolenprotokoll geschrieben wurde. –

Antwort

6

Sie laden eine NIB, die eine 10.7-spezifische Funktion verwendet, Cocoa Autolayout, auf 10.6, die es nicht versteht. Wenn Sie die Ausführung am 10.6 unterstützen möchten, müssen Sie solche Funktionen vermeiden. Sie sollten in der Lage sein, das Implementierungsziel auf der NIB festzulegen, was dazu führt, dass Warnungen für Features angezeigt werden, die von diesem Implementierungsziel nicht unterstützt werden.

Wenn Sie dies noch nicht getan haben, müssen Sie etwas Ähnliches für die Build-Einstellungen Ihres Ziels tun. Legen Sie das Implementierungsziel fest. Leider wird dies nicht unbedingt zu Warnungen für Code führen, der Funktionen verwendet, die in 10.7 eingeführt wurden. Sie können eine alternative Build-Konfiguration einrichten, die gegen das 10.6 SDK erstellt und dagegen kompiliert wird, um zu erfahren, wo Sie Post-10.6-Funktionen verwenden. Weitere Informationen finden Sie unter Apples SDK Compatibility Guide.

+0

Vielen Dank! Sie haben meinen Arsch gerettet – NSAddict

+0

Ich denke, es ist erwähnenswert, dass Sie das Deployment-Target Ihrer Nib konfigurieren können, so dass Xcode sofort über Vorkommnisse von Inkompatibilitäten warnen wird. Sie müssen jedoch jede Spitze in Ihrem Projekt individuell konfigurieren. Ich bekam diesen Fehler und obwohl ich wusste, dass es mit 10.7-spezifischen Funktionen zusammenhing, lag der Grund, warum es übersehen wurde, darin, dass die Kompatibilität meiner Feder immer noch auf 10.8 eingestellt war. – dreamlax