Największą zaletą frameworka w porównaniu z bibliotekami statycznymi jest to, że działają one jako zgrabny sposób pakowania skompilowanej biblioteki binarnej i wszelkich powiązanych nagłówków. Można je wrzucić do projektu (podobnie jak wbudowane frameworki SDK, takie jak Foundation i UIKit) i powinny po prostu działać (przez większość czasu).
Większość frameworków zawiera biblioteki dynamiczne; frameworki utworzone w Xcode przy użyciu szablonu Mac Framework utworzą bibliotekę dynamiczną. IPhone nie obsługuje struktur dynamicznych, dlatego często biblioteki wielokrotnego użytku kodu iOS są dystrybuowane jako biblioteki statyczne.
Biblioteki statyczne są w porządku, ale wymagają trochę dodatkowej pracy ze strony użytkownika. Musisz połączyć swój projekt z biblioteką i skopiować pliki nagłówkowe do projektu lub gdzieś się do nich odwołać, ustawiając odpowiednie ścieżki wyszukiwania nagłówków w ustawieniach kompilacji.
A więc: podsumowując, moim zdaniem najlepszym sposobem dystrybucji twojej biblioteki jest użycie frameworka. Aby stworzyć „statyczną” strukturę dla systemu iOS, można w zasadzie wziąć normalną strukturę i zastąpić plik binarny skompilowaną biblioteką statyczną. W ten sposób rozprowadzam jedną z moich bibliotek, Resty, i w ten sposób zamierzam rozprowadzać moje biblioteki w przyszłości.
Możesz spojrzeć na dostarczony plik Rakefile w tym projekcie (jeśli nie jesteś tego świadomy, Rake jest odpowiednikiem Make w Rubim). Mam kilka zadań do skompilowania mojego projektu (użycie xcodebuild
) i spakowania ich jako statycznej struktury dla iOS. Powinieneś uznać to za przydatne.
Alternatywnie możesz użyć tych szablonów Xcode 4 do tworzenia struktury iOS.
Aktualizacja z 9 grudnia 2013 r . : to popularna odpowiedź, więc pomyślałem, że poprawię, aby powiedzieć, że zmienił się mój pierwszy wybór dystrybucji biblioteki. Moim pierwszym wyborem dla dowolnej biblioteki zewnętrznej jako konsumenta lub producenta jest CocoaPods. Dystrybuuję swoje biblioteki za pomocą CocoaPods i oferuję wstępnie skompilowaną bibliotekę statyczną z nagłówkami jako opcją rezerwową.