Was ist als Anfänger für iPhone-Programmierer die beste Vorgehensweise zum Schreiben von Apps, die entweder mit iOS 5 oder älteren Versionen verwendet werden sollen? Sollte ich die Freigabe / Aufbewahrung von Daten weiterhin verwenden oder sollte ich das ignorieren? Ist das wichtig?
109
Antworten:
Es liegt an dir. Sie können Apps mit ARC (Automatic Reference Counting) schreiben, und Xcode schreibt "Klebercode", damit Ihre ARC-fähigen Apps unter iOS 4 ausgeführt werden können, ohne dass Änderungen erforderlich sind. Bestimmte Dinge funktionieren jedoch nicht, und am auffälligsten ist, dass viele Bibliotheken, die Sie möglicherweise verwenden möchten, (manchmal) unzählige Fehler verursachen und Sie sie erst verwenden können, wenn die Entwickler ein mit ARC kompatibles Update veröffentlichen.
Bearbeiten : Ich habe kürzlich festgestellt, dass Sie ARC pro Datei deaktivieren können. Siehe die Antwort von pixelfreak . Mein Rat bleibt also bestehen, aber jetzt sollten die Bibliotheken von Drittanbietern nicht aktualisiert werden müssen, um mit ARC zu arbeiten.
Apple sagt Folgendes zum Deaktivieren von ARC für bestimmte Dateien:
Die vollständige Übergangsanleitung finden Sie hier .
quelle
-fno-objc-arc
JSONKit
zum Beispiel. Versuchen Sie, dies durch die ARC-Prüfung zu führen. Du wirst sehen, was ich meine. ;)Für alle, die noch neugierig sind, wie ARC für einzelne Dateien deaktiviert werden kann, habe ich Folgendes getan:
Build Phases > Compile Sources
Ich weiß nicht, ob dies der empfohlene Weg ist, aber es funktioniert für mich.
PS: Ich habe diese Informationen von clang.llvm.org hier gesammelt , die öffentlich zugänglich sind, also nicht unter NDA.
quelle
iOS 5 steht noch unter einer NDA und wird wahrscheinlich bis zur Veröffentlichung der öffentlichen Version verfügbar sein. Wenn Sie ein Entwicklerkonto haben, besuchen Sie die Apple Developer Forums und fragen Sie dort nach.
Bei früheren Versionen müssen Sie Referenzen zählen und entsprechend aufbewahren und freigeben. Lesen Sie das Handbuch zur Speicherverwaltung .
Bearbeiten: Hier ist eine öffentliche Spezifikation für die automatische Referenzzählung und ein Zitat von der öffentlichen iOS 5-Seite :
quelle
Die Details sind derzeit leicht / unter NDA, aber Apple hat die automatische Referenzzählung (ARC) in iOS 5 implementiert, wie hier beschrieben: http://developer.apple.com/technologies/ios5/
Wenn Sie eine neue App in Xcode 4 mit dem iOS 5 SDK entwickeln, können Sie die Aufbewahrungs- / Freigabezählung ignorieren.
[edit] sudo rm -rf macht einen guten Punkt; Bibliotheken von Drittanbietern können erheblich betroffen sein
quelle
Niemand hat SystemConfiguration.framework erwähnt ? Bitte vergessen Sie nicht, es in Frameworks zu setzen . Ich habe kläglich mehrere Stunden damit verbracht, es zu realisieren.
quelle
Es ist sicherlich die Wahl des Entwicklers oder des Teams. ARC (Automatic Reference Counter) hat die Arbeit etwas vereinfacht, indem der Speicher automatisch für Sie verwaltet wurde. Es wird freigegeben, aufbewahrt und gegebenenfalls freigegeben. Ich glaube, dass Sie Erfahrung in der Verwaltung des Speichers sammeln sollten, vorzugsweise in einer Testanwendung, wenn Sie dies noch nicht getan haben. Eine andere zu berücksichtigende Sache ist, ob Ihre Anwendung auf Bibliotheken von Drittanbietern basiert. Wenn diese nicht in ARC konvertiert wird, kann Ihre Anwendung nicht kompiliert werden. Die Wahl hängt offensichtlich von der jeweiligen Situation ab.
quelle
Setzen Sie das Flag in den Projekteinstellungen> Phasen erstellen> Quellen kompilieren als -fno-objc-arc
quelle