Ich entwickle eine App, die mit iOS 4 kompatibel ist, daher ist mein Implementierungsziel auf iOS 4.0 eingestellt.
Immer, wenn ich ein UINavigationController
auf ein UITabBar
setze, bekomme ich diese zwei Warnungen:
warning: Attribute Unavailable: Defines Presentation Context is not available prior to Xcode 4.2.
warning: Attribute Unavailable: Defines Presentation Context on iOS versions prior to 5.0.
Der UINavigationController
funktioniert wie erwartet, tatsächlich läuft die gesamte App perfekt. Aber diese zwei Warnungen machen mich verrückt!
Auch wenn ich die UINavigationController
lösche verschwinden die Warnungen.
Deaktivieren Sie einfach das Kontrollkästchen "Defines Context" im Attributinspektor. (Doppelklicken Sie auf MainWindow.xib, wählen Sie den Navigations-Controller, dann gehen Sie zu View- & gt; Dienstprogramme- & gt; Attribute Inspector.) Das wird die Warnungen loswerden.
Sie erhalten diese Warnungen, weil Sie iOS 5.0 SDK-Funktionen mit einem 4.x-Bereitstellungsziel verwenden.
Alle, wenn nicht, die meisten der neuen 5.0 Hotness, einschließlich ARC und Storyboards, ist vollständig abwärtskompatibel mit iOS 4.x (ich erinnere mich nicht, ob 4.0 oder 4.3 die niedrigste unterstützte Version ist, überprüfen Sie die Dokumente), es wird wie vorgesehen funktionieren, aber Xcode wird Sie sowieso warnen.
Sie sollten diese Warnung deaktivieren können, wenn es Sie wirklich stört, aber ich würde nicht. Das heißt, Apple akzeptiert derzeit keine Anwendungen, die mit der Xcode 4.2-Beta erstellt / archiviert wurden, um sie an den App Store zu senden. Das bedeutet, dass Sie Xcode 4.0 / 4.1 in einer Produktionsumgebung verwenden müssen.
Bevor wir weiter gehen, sollten Sie wissen, dass Xcode 4.2 / iOS 5 eine Beta-Software ist, die unter NDA steht (Sie waren damit einverstanden, als Sie dem Apple-Entwicklerprogramm beitraten) und kann nicht in der Öffentlichkeit diskutiert werden. Dies bedeutet, dass Sie nicht in der Lage sein werden, viel Hilfe von öffentlichen Stellen wie StackOverflow zu bekommen, so gut es geht. Aber , da ich hier bin und das ist eine sehr hohe Frage, ich kann helfen :)
Wenn Sie in Zukunft Fragen oder Probleme mit iOS-Beta haben, sollten Sie die Apple Developer Beta-Foren (eine ausgezeichnete Ressource, suche immer, bevor du poste), oder #iphonedev auf irc.freenode.net für Nicht-Beta-Sachen (Ich werde da sein, sag Hallo!)
Sie müssen mit Xcode 4.0 oder 4.1 entwickeln, Apple akzeptiert keine Anwendungen, die mit 4.2 erstellt / archiviert wurden. (Ich weiß, ich habe mich wiederholt, aber die Leute scheinen das oft zu verpassen)
Und obwohl 4.2b7 die Entwicklung für ältere Frameworks besser als frühere Xcode-Betas unterstützt (indem Sie frühere Versionen des Simulators installieren können), werden Sie immer noch feststellen, dass Sie versehentlich 5.0 SDK-Funktionen überall verwenden, wie der Code Komplettierung / Interface-Builder bevorzugt sehr aggressiv die gesamte neue Schärfe. Dies liegt daran, dass die Betaversion zum Testen neuer Dinge und nicht für eine stabile Anwendungsentwicklung gedacht ist.
Dies bedeutet, dass Sie zur Produktion Xcode 4.0 / 4.1 verwenden müssen, wenn Sie es nicht installiert haben, oder Sie haben die stabile Version mit der Beta überschrieben, versuchen Sie nicht, 4.0 / 4.1 zu installieren oben auf der 4.2 beta strong>, werden seltsame Dinge passieren und beide Versionen werden sich wirklich merkwürdig verhalten und Xcode wird mindestens doppelt so oft abstürzen.
In dieser Situation sollten Sie die folgenden Schritte befolgen. Stellen Sie sicher, dass Sie nichts überspringen, sonst müssen Sie den gesamten Prozess neu starten.
Stellen Sie sicher, dass Ihr Code festgeschrieben und hochgesetzt wurde. Durch die Deinstallation von Xcode wird vorübergehend Git entfernt. (Dies war ein Ausgabe für mich bei der Arbeit einmal)
Laden Sie die Installationsprogramme für Xcode 4.0 / .1 und 4.2 herunter, wenn Sie weiter experimentieren möchten. (wenn Sie schon Haben beide heruntergeladen, dauert dieser ganze Prozess nicht mehr als 5 Minuten auf einer SSD)
Deinstallieren Sie die Xcode-Beta von der Befehlszeile mit diesem Befehl:
sudo <Xcode>/Library/uninstall-devtools --mode=all
( mehr Infos hier )
Starten Sie Ihren Computer neu (das ist wichtig, überspringen Sie es nicht !!!)
Installieren Sie die neueste Nicht-Beta-Version von Xcode und nehmen Sie die Entwicklung wieder auf.
Sie müssen die Betaversion von AFTER 4.0 / 4.1 installieren installieren, sonst werden Sie neue Dinge mit alten Dingen überschreiben, und dies wird Ihnen viele, viele obskure Kopfschmerzen bereiten. Ich empfehle auch, zwischen den Installationen neu zu starten.
Sie müssen 4.2 nach 4.0 / 4.1 und in einen anderen Ordner installieren (ich benutze / Xcode4beta /, nicht in den Ordner, der 4.0 / 4.1 enthält). Ich habe herausgefunden, dass ich am besten über die neue Hitze lerne, wenn ich separate iOS5-Zweige meiner Arbeit behalte und aktualisiere, was ich kann, wenn ich etwas Freizeit habe.
Wenn Sie die iOS5-Betaversion auf Ihrem Telefon installiert haben und Xcode 4.0 / 4.1 das Erstellen auf Ihrem Telefon nicht zulässt:
Dies liegt daran, dass Xcode die Debug-Symbole vom Telefon abgreifen muss, bevor es für die Entwicklung verwendet werden kann, aber nur die Xcode-Beta kann dies für ein iOS5-Beta-Gerät tun, also folge diesen Schritten:
Vergewissern Sie sich, dass das Telefon angeschlossen und eingeschaltet ist und dass alle Bereitstellungsprofile / Zertifikate auschecken.
Schließen Sie das Projekt in Xcode 4.0 / 4.1.
Öffnen Sie das Projekt in Xcode 4.2 und überprüfen Sie den Organisator. Sie sollten entweder bereits einen grünen Punkt neben Ihrem Telefon haben (vorausgesetzt, dass Ihre gesamte Bereitstellung funktioniert) oder die Debug-Symbole sammeln. Lass das fertig und baue dann dein Projekt.Es muss kein erfolgreicher Build sein, noch muss man die Anwendung auf dem Telefon installieren, manchmal muss man nicht einmal bauen, Xcode kann eine launische Geliebte sein.
Schließen Sie das Projekt in Xcode 4.2.
Öffnen Sie das Projekt in Xcode 4.0, Sie sollten nun in der Lage sein, Ihr Telefon wie gewohnt zu erstellen und zu installieren.
Xcode 4.0 / 4.1 sollte jetzt in der Lage sein, Ihr Gerät für die Entwicklung zu verwenden, bis Sie den Computer neu starten.