18

Sto cercando di risolvere il problema. So come ottenere un progetto ARC che funzioni con file o lib statici che non usano ARC. Ad esempio, utilizzando le flag del compilatore -fno-objc-arc.Utilizzo di una libreria statica ARC in un progetto NON ARC

Ma cosa succede se ho un progetto che non utilizza ARC e desidera includere una libreria statica compilata con ARC? Ogni volta che voglio costruire il progetto mi sta dicendo che non riconosce cose come "forte, __unsafe_unretained, ...".

+0

Solo per curiosità, perché non si può basta accendere ARC per il vostro progetto e aggiungere il flag di compilazione a tutti i file? C'è una ragione specifica per cui è necessario disabilitare ARC? –

+0

Il progetto è stato costruito qualche tempo fa e utilizza anche molti altri framework non arc non di terze parti. Quindi sarebbe un processo noioso andare su tutti i file e impostare i flag del compilatore. Speravo in una soluzione migliore/più pulita. Quindi non avrei bisogno di compilare i flag del compilatore su più di 300 file sorgente ... :) – Yannick

+0

Sai che il migratore ARC ti permette di "selezionare tutti" i file per aggiungere il flag? Almeno in Xcode 4.2, non è necessario eseguire manualmente tutti i file. –

risposta

8

Dovrebbe funzionare correttamente: sei sicuro di utilizzare il nuovo compilatore Apple con questo progetto non ARC e non con quello GCC?

+1

Beh, se lo facessi avrei bisogno di rimuovere tutte le chiamate di mantenimento/rilascio dal mio progetto e fondamentalmente iniziare con ARC tutto il resto. E io non voglio farlo perché ha un vecchio codice legacy e alcune strutture in esso. – Yannick

+1

No, non lo sei: ARC è una funzione di compilazione aggiuntiva, non devi usarla se non vuoi. Usare l'ultima versione di Apple LLVM non significa che devi usare ARC: è una tua scelta (ti dà anche la possibilità di usare ARC quando non stai facendo un nuovo progetto). Usarlo non significa che devi convertire il tuo vecchio codice in ARC. La differenza è che comprende tutte quelle nuove parole chiave ecc. – shw

+1

Jep hai ragione. Pensavo di dover ricominciare con ARC'ing, ma si stava lamentando solo di alcuni casting mancati __bridged e di qualche altro errore! Grazie! – Yannick

16

Per aggiungere alla risposta di Shw. Aggiungi -fobjc-arc ai flag del compilatore in fase di compilazione in file ARC per farli compilare correttamente per progetti non ARC.

Maggiori informazioni here

+0

Semplicemente fantastico ... –