2011-11-01 12 views

risposta

7

Sì, con un avvertimento: se si dispone di iOS 4.x come destinazione di distribuzione, è necessaria una libreria supplementare per gestire il codice compilato da ARC sul runtime precedente. Per un'applicazione creata utilizzando ARC, questa è inclusa nell'applicazione. Questo non è incluso se si sta utilizzando una libreria compilata ARC in un'applicazione non ARC.

È possibile collegare manualmente questa libreria all'applicazione non ARC per evitare problemi di runtime nelle versioni precedenti del sistema operativo aggiungendo -fobjc-arc ai propri altri Linker Flag per l'applicazione.

Vedere this Apple Developer Forums thread per ulteriori discussioni su questo.

+0

In realtà, l'ho provato in questo momento in un progetto e non è stato d'aiuto, non hai avuto la possibilità di dare un'occhiata? http://stackoverflow.com/questions/8375233/ld-duplicate-symbol-objc-retainedobject-on-ios-4-3-but-not-on-ios-5-0 –

+0

Perché dovrebbero esserci problemi di runtime? ARC non lo sta facendo al momento della compilazione? –

+0

@ZakyGerman - ARC non si limita a iniettare '-retain' e' -release' nei punti giusti, e introduce cose come il nuovo '@ autoreleasepool', quindi ha bisogno di un piccolo aiuto in fase di esecuzione per questo. Questo è integrato in iOS 5.0, ma 4.x richiede questa libreria di compatibilità all'indietro. –

1

Va bene. La libreria è già compilata, quindi ARC/NonARC non dovrebbe più importare.

+1

C'è un potenziale problema con il vecchio runtime e le librerie statiche abilitate ARC, che ho dettagliato nella mia risposta. –

2

È possibile collegare alla libreria di colla fornita da Apple (come ha detto Brad nella sua risposta sopra). Tuttavia, il qualificatore di variabile __weak non è compatibile con i sistemi operativi inferiori a 4.3 (Come menzionato qui: iOS 5 Best Practice (Release/retain?) in un commento di sudo).

Problemi correlati