Il più grande vantaggio di un framework rispetto alle librerie statiche è che agiscono come un modo pulito di impacchettare il binario della libreria compilata e tutte le intestazioni correlate. Possono essere inseriti nel tuo progetto (proprio come i framework integrati dell'SDK come Foundation e UIKit) e dovrebbero funzionare (la maggior parte delle volte).
La maggior parte dei framework contiene librerie dinamiche; i framework creati in Xcode utilizzando il modello Mac Framework creeranno una libreria dinamica. L'iPhone non supporta i framework dinamici, motivo per cui è diventato comune invece che le librerie riutilizzabili di codice iOS vengano distribuite come librerie statiche.
Le librerie statiche vanno bene, ma richiedono un po 'di lavoro extra da parte dell'utente. Devi collegare il tuo progetto alla libreria e devi copiare i file di intestazione nel tuo progetto o fare riferimento ad essi da qualche parte impostando i percorsi di ricerca dell'intestazione appropriati nelle impostazioni di compilazione.
Quindi: in sintesi, la mia opinione è che il modo migliore di distribuire la tua biblioteca sia come framework. Per creare un framework "statico" per iOS, puoi essenzialmente prendere un framework normale e sostituire il binario con la tua libreria statica compilata. Questo è il modo in cui distribuisco una delle mie librerie, Resty ed è così che intendo distribuire le mie librerie in futuro.
Potresti voler guardare il Rakefile fornito in quel progetto (nel caso in cui non sei a conoscenza, Rake è l'equivalente di Make di Ruby). Ho una manciata di compiti per compilare il mio progetto (usando xcodebuild
) e confezionarli come framework statico per iOS. Dovresti trovarlo utile.
In alternativa, potresti voler utilizzare questi modelli Xcode 4 per creare un framework iOS.
Aggiornamento 9 dicembre 2013 : questa è una risposta popolare, quindi ho pensato di modificare per dire che la mia prima scelta per la distribuzione delle biblioteche è cambiata. La mia prima scelta per qualsiasi libreria di terze parti come consumatore o produttore è CocoaPods. Distribuisco le mie librerie utilizzando CocoaPods e offro una libreria statica precompilata con intestazioni come opzione di fallback.