Der größte Vorteil eines Frameworks gegenüber statischen Bibliotheken besteht darin, dass sie die kompilierte Bibliotheksbinärdatei und alle zugehörigen Header auf übersichtliche Weise verpacken. Sie können in Ihr Projekt eingefügt werden (genau wie die in das SDK integrierten Frameworks wie Foundation und UIKit) und sollten (meistens) einfach funktionieren.
Die meisten Frameworks enthalten dynamische Bibliotheken. In Xcode mithilfe der Mac Framework-Vorlage erstellte Frameworks erstellen eine dynamische Bibliothek. Das iPhone unterstützt keine dynamischen Frameworks, weshalb es üblich geworden ist, wiederverwendbare Bibliotheken mit iOS-Code stattdessen als statische Bibliotheken zu verteilen.
Statische Bibliotheken sind in Ordnung, erfordern jedoch einige zusätzliche Arbeit seitens des Benutzers. Sie müssen Ihr Projekt mit der Bibliothek verknüpfen und die Header-Dateien in Ihr Projekt kopieren oder irgendwo darauf verweisen, indem Sie in Ihren Build-Einstellungen die entsprechenden Header-Suchpfade festlegen.
Zusammenfassend lässt sich sagen, dass die beste Art, Ihre Bibliothek zu verteilen, ein Framework ist. Um ein "statisches" Framework für iOS zu erstellen, können Sie im Wesentlichen ein normales Framework verwenden und die Binärdatei durch Ihre kompilierte statische Bibliothek ersetzen. Auf diese Weise verteile ich eine meiner Bibliotheken, Resty, und beabsichtige, meine Bibliotheken in Zukunft zu verteilen.
Vielleicht möchten Sie sich die mitgelieferte Rake-Datei in diesem Projekt ansehen (falls Sie sich nicht bewusst sind, ist Rake Rubys Äquivalent zu Make). Ich habe eine Handvoll Aufgaben, um mein Projekt zu kompilieren (mit xcodebuild
) und es als statisches Framework für iOS zu verpacken. Sie sollten dies nützlich finden.
Alternativ können Sie diese Xcode 4-Vorlagen zum Erstellen eines iOS-Frameworks verwenden.
Update 9. Dezember 2013 : Dies ist eine beliebte Antwort, daher dachte ich, ich würde sie bearbeiten, um zu sagen, dass sich meine erste Wahl für die Bibliotheksverteilung geändert hat. Meine erste Wahl für eine Drittanbieter-Bibliothek als Verbraucher oder Produzent ist CocoaPods. Ich verteile meine Bibliotheken mit CocoaPods und biete eine vorkompilierte statische Bibliothek mit Headern als Fallback-Option an.