2015-04-05 8 views
6

Ich bin neu in Xcode und in Swift Sprache. Ich versuche die Verwendung des "Imports" in ViewController und des "Framework-Imports" in meinem Projekt zu verstehen. Beispiel: Wenn ich Corelocation verwenden, ich brauche nur Corelocation in meinem Viewcontroller importieren, oder ich brauche zu CoreLocation.framework in meinem Projekt zu importieren? Ich sage dies, weil alles funktioniert nur mit CoreLocation am oberen Rand meiner ViewController importieren, ohne sein Framework zu importieren.Was ist der Unterschied zwischen "Importieren" von Framework und "Verknüpfen" mit Framework?

Danke!

Antwort

7

Die import im Quellcode erleichtert die Kompilierung Ihres Codes und stellt sicher, dass die richtigen Header gefunden werden. Der Abschnitt "Link Binary with Libraries" der "Build Phases" in "Project Settings" (jetzt auch auf der Registerkarte "Summary" unter "Linked Libraries and Frameworks") gibt an, mit welchen Frameworks und Bibliotheken Ihr Objektcode verknüpft wird.

Historisch mussten wir diese beiden immer separat angeben, aber jetzt gibt es eine Projekteinstellung "Frameworks automatisch verlinken", wenn diese Option aktiviert ist, wird das Framework automatisch mit Ihrem Projekt verknüpft, wenn Sie es in Ihrem Quellcode eingeben. Sie müssen auch "Module aktivieren" aktiviert haben.

+0

Also muss ich nur hinzufügen * import * in meinem Quellcode ohne Framework hinzufügen, wenn "Frameworks automatisch verknüpfen" aktiviert ist? – Giuseppe

+0

Ja, für Gerüste. Für Bibliotheken (z. B. libsqlite3.0.dylib usw.) müssen Sie diese noch manuell hinzufügen, aber für Frameworks sollte sie automatisch hinzugefügt werden. Beachten Sie, dass Sie sowohl "Frameworks automatisch verknüpfen" als auch "Module aktivieren" aktivieren müssen, damit dies funktioniert. – Rob

+0

Ja, sie sind beide eingeschaltet. Zum Beispiel: In meiner App verwende ich MapKit und CoreLocation. Zuvor hatte ich im Bereich "Fähigkeiten" Maps auf ON gesetzt. Jetzt ohne Link-Framework manuell, habe ich es auf OFF gestellt. Es ist normal? – Giuseppe