2011-12-26 7 views
6

Il mio progetto utilizza ARC (Automatic Reference Counter), quindi quando provo ad importare la libreria ASIHTTPRequest che ha 4 classi che hanno utilizzato nella loro implementazione l'istruzione autorelease, qui è un esempio:I file non supportano la funzione ARC, come comportarsi con

[self setAccessLock:[[[NSRecursiveLock alloc] init] autorelease]]; 

L'errore che ho ottenuto:

ARC forbids explicit message send of autorelease 

Cosa devo fare per risolvere questo problema.

risposta

14

Ho la soluzione, avevo bisogno di aggiungere i giusti flag ai flag del compilatore per ogni file che non supporta l'ARC. Per me, io uso Xcode 4.2, quindi sotto target -> Build Phases -> Compile Sources, fare doppio clic sul file che si desidera disabilitare la funzionalità ARC e mettere -fno-objc-arc il clic su Done. Ed è fatto)

Si noti che se il file non esiste nell'elenco, è sufficiente aggiungerlo facendo clic sul pulsante + e quindi eseguire la stessa operazione sopra.

9

Disabilita ARC per che una classe

Durante la migrazione di un progetto per utilizzare ARC, il flag di compilazione -fobjc-arc è impostato come predefinito per tutti i file sorgente Objective-C. È possibile disabilitare ARC per una classe specifica usando il flag del compilatore -fno-objc-arc per quella classe.

In Xcode, nella scheda Fasi di generazione di destinazione, aprire il gruppo Origini di compilazione per visualizzare l'elenco dei file di origine. Fare doppio clic sul file per il quale si desidera impostare il flag, immettere -fno-objc-arc nel pannello pop-up, quindi fare clic su Fine.

Problemi correlati