2012-04-21 3 views
5

Sto lavorando a un progetto su larga scala su iOS e voglio separare i moduli indipendenti in diversi pacchetti caricabili. Tuttavia, il documento ufficiale indica che bundle caricabile non è supportato su iOS. Inoltre, ho intenzione di utilizzare la distribuzione in-house, quindi l'approvazione del negozio di app non è un problema.Bundle caricabile su iOS, esiste un modo per raggiungere questo obiettivo?

Ora la mia domanda è: chiamo [_bundle principalClass] nel codice per accedere alla classe di ingresso del pacchetto caricabile. Funziona bene su dispositivi iOS jailbroken. Per i dispositivi non registrati, quando utilizzo la modalità di debug con Xcode, funziona anche bene. Ma quando lo eseguo in modo indipendente, da trampolino, si arresta in background.

voglio veramente sapere:

1) Perché è così diverso per il fascio di caricabile in esecuzione sul dispositivo jailbroken/unjailbroken?
2) Principali differenze tra la modalità di debug di XCode e la modalità di esecuzione normale per l'applicazione?

Esistono altri modi complicati per l'utilizzo della libreria dinamica su dispositivi iOS unjailbroken?

risposta

1

iOS disattiva tutto il caricamento dinamico del codice eseguibile che non fa parte del sistema; questo include Framework, dylibs, pagine di memoria eseguibili usando mmap, ecc. Si spera che un giorno consentiranno pacchetti dinamici, ma per il momento sarà necessario creare i propri moduli come librerie statiche e collegarsi a loro in fase di costruzione. Non esiste un modo per aggirare questa limitazione.

Un sacco di persone hanno scritto su come fare questo (ad esempio, http://blog.carbonfive.com/2011/04/04/using-open-source-static-libraries-in-xcode-4/), oppure si potrebbe voler utilizzare un progetto esistente come esempio. Uno che mi piace è l'API GData objc, che ha obiettivi sia per un framework dinamico quando è stato creato per OS X, sia una libreria statica quando è compilato per iOS: http://code.google.com/p/gdata-objectivec-client/