Frage

Bis bis IOS7 unterstützt Apple keine dynamische Verknüpfung aufgrund von Sicherheitsbedenken. Die Wiederverwendung von Code zwischen Entwicklern stützt sich in der Regel auf statische Bibliotheken, die als Teil der ausführbaren Dateien der App erstellt wurden.

Einführung von Erweiterungen in iOS8 scheint das ein bisschen zu ändern, da Erweiterungen separate Ausführungen sind. Freigabecode zwischen einer Erweiterung und der mit der App enthaltenen App erfolgt über einen Rahmen. Apple sagt das in ihrer Versionshinweise:

Frameworks für iOS. IOS-Entwickler können jetzt dynamische -Rahmen erstellen. Frameworks sind eine Sammlung von Code und Ressourcen zum Einkapseln Funktionalität, die in mehreren Projekten wertvoll ist. Frameworks Arbeiten Sie perfekt mit Erweiterungen, teilen Sie die Logik, die von beiden verwendet werden kann die Hauptanwendung und die gebündelten Erweiterungen.

Betonung ist meine.

Quelle: https://developer.apple.com/Library/content/documentation/xcode/code/whatsnewxcode-archive/articles/xcode_6_0.html#/Ple_ref/doc/uid/tp40014509-Sw14

Ferner, in der Erweiterungsdehnungsanleitung, erklären sie, dass Sie den Code zwischen einer Erweiterung und der enthaltenden App über ein "eingebettetes Framework" freigeben können.

Quelle: https://developer.apple.com/library/content/documentation/general/conceptual/extensibilitätPG/extensionscenarios.html#//apple_ref/doc/uid/tp40014214-ch21-sw1

Meine Frage ist - was ist ein eingebetteter Rahmen, wie unterscheidet es sich von einem dynamischen Rahmen, und sehen wir wirklich eine ordnungsgemäße dynamische Verknüpfung in iOS8? Alles, welche Dokumentation, die ich gelesen habe, erscheint dabei mehrdeutig.

War es hilfreich?

Lösung

"Embedded" und "Dynamic" -Rahmen beziehen sich nicht auf denselben Aspekt von Frameworks.Sie sind nicht das Gegenteil eines anderen.Lassen Sie uns zunächst definieren, was ein Rahmen ist: In Apple Lingo bezieht sich in Apple Lingo ein Rahmen auf einen kompilierten Code + der öffentlichen Header des Codes.

  • Jetzt ein dynamisches -Rahmen ist ein Framework, dessen Code als dynamische Bibliothek erstellt wurde.Es ist das Gegenteil eines "statischen" Frameworks, in dem der Code als statische Bibliothek gebaut wird.Falls Sie sich fragen, hat Wikipedia eine sehr schöne Erklärung von dem, was der Unterschied zwischen einer statischen und einer dynamischen Bibliothek ist.

  • Und schließlich ist ein von eingebetteter -Rahmen ein Framework, das in einer App verpackt ist, im Gegensatz zum installierten Systemweiten, in "/ System / Bibliothek / Frameworks", beispielsweise in "/ System / Bibliothek / Frameworks".

Andere Tipps

Ein eingebettetes Framework ist einfach ein, der in das App-Bundle enthalten ist, anstelle eines globalen Rahmens, das im Systemverzeichnis installiert ist.

dynamische Frameworks bedeutet nicht, dass dynamisch verknüpftes Framework . Apps funktionieren immer noch in einer Sandbox-Umgebung. Es ist nicht so, dass Ihre benutzerdefinierten Frameworks mit den iOS installiert werden. Jeder Ihrer Apps, der den gemeinsamen Rahmen verwendet, der Sie entwickelt haben, wird in jedes App-Bündel kopiert.

Sie können das für sich selbst sehen. Gehen Sie zu Ihrem Xcode abgeleiteten Datenverzeichnis und in den Daten der App finden Sie alle kopierten eingebetteten Rahmenbedingungen.

Die einzige neue Sache mit der Erstellung von Frameworks mit iOS 8 im Vergleich zu statischen Bibliotheken ist, dass die öffentlichen Header-Dateien und -aktiva im Rahmen gebündelt werden. Wenn Sie diese Art von Dingen mit früheren Versionen von Xcode gemacht haben, erinnern Sie sich an den Schmerz mit den öffentlichen Kopfzeilen und fügen dann den Suchpfad innerhalb der Xcode-Einstellungen hinzu, und für Vermögenswerte mussten wir ein separates Bündel eingeben. .

Dieser einzige Nachteil der Verwendung von Frameworks, die ich sehe, ist, dass wir jetzt nicht einfach lipo verwenden können, um eine fat statische Bibliothek für alle Architekturen zu generieren.

imo Apple verwendet das Wort 'dynamic', um "unabhängig" vorzuschlagen.

Watch WWDC2014 - Bauen von modernen Rahmenbedingungen für weitere Details.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top