Xcode Swift-Importcode innerhalb eines App-Ziels im Vergleich zu einem Framework-Ziel - Was ist der Unterschied?

Nov 20 2020

Ich importiere zwei .swift-Dateien in eine vorhandene ObjC-App.

Das Apple-Dokument "Swift in Objective-C importieren" listet diese beiden Optionen auf, aber ich verstehe ihren Unterschied nicht.

Ich kenne den Unterschied zwischen "App Target" und "Framework Target" nicht.

Ich habe ein Xcode-App-Projekt erstellt und kein Framework-Projekt. Ist das der Unterschied?

Antworten

2 DuncanC Nov 20 2020 at 02:55

Ein Framework-Ziel bedeutet, dass Ihr Projekt Ihren Code in eine Bibliothek kompiliert, die dann von anderen Programmen verwendet werden kann. CocoaPods sind Beispiele für Frameworks.

Ein Projekt kann mehrere Ziele enthalten. Es ist möglich, dass Ihr Projekt ein Framework definiert und die Quelldateien für dieses Framework bereitstellt sowie eine Anwendung als separates Ziel erstellt (normalerweise tun Sie dies, wenn Ihre Anwendung die von ihr erstellten Frameworks verwendet).

Sofern Sie keine eigenen Frameworks erstellen, sollten Sie "App-Ziel" auswählen.

OlSen Nov 20 2020 at 07:40

Mit diesem Beitrag nicht die richtige Antwort liefern. In Bezug auf Ihre andere Frage bezieht sich die schnelle Fehlerverwendung des zentralen Managers auf die Instanzmethode und nicht auf var. Ich denke, Sie verwechseln den Unterschied zwischen einer statischen Bibliothek und einem Framework. Ohne auf die Unterschiede und deren Verwendung einzugehen, kann es hilfreich sein, sie voneinander zu unterscheiden.

  1. Eine statische Bibliothek kann Frameworks und andere Bibliotheken verwenden.
  2. Frameworks können andere Frameworks und (andere) Bibliotheken verwenden.
  3. Eine App kann statische Bibliotheken und verschiedene Frameworks verwenden.

Beim Erstellen von Zielen in Ihrem Arbeitsbereich / Projekt für iOS gibt es verschiedene Vorlagen zum Erstellen von unterstützendem Code. Der Dialog unterscheidet speziell zwischen Static Library und Framework.

Jeder von ihnen erstellt ein Ziel in Ihrem Projekt und normalerweise auch ein Schema, um diese mit ihren getrennten Zieleinstellungen zu kompilieren. In Ihrer Apps-Zieleinstellung können Sie festlegen, wo sich Header befinden, was verknüpft und in Ressourcen kopiert werden muss oder woanders, damit dies funktioniert. Wenn diese Ziele Teil eines Projekts sind, können Sie die Xcodes-Funktionen nutzen, mit denen Sie die Abhängigkeit kompilieren können, bevor Sie fortfahren und schließlich die App selbst kompilieren. Sobald ein (in einem Beispiel) Framework kompiliert wurde, behält Xcode es bei, sodass es nicht jedes Mal kompiliert werden muss, wenn Sie Ihre App abhängig von diesem Framework kompilieren. Sobald Sie das Framework ändern, können Sie erwarten, dass Xcode es erneut kompiliert. Wenn die Ziele in verschiedenen Arbeitsbereichen / Projekten voneinander getrennt sind, müssen Sie diese Abhängigkeiten und ihre letzte kompilierte Version, die in Ihrer App verwendet wird, im Auge behalten.

Denn - nicht überraschend - Sie sind dafür verantwortlich, die Verknüpfungen zu verknüpfen, Abhängigkeiten zu definieren und die Teile bereitzustellen / zu platzieren und zu deklarieren, die erforderlich sind, damit Ihre App zur Laufzeit funktioniert.

Und hier ein Screenshot mit verschiedenen Zielen in einem Projekt (zufällige Benennung) sowie den Einstellungen für Framework, Bibliotheken und eingebetteten Inhalt für das ausgewählte App-Ziel .