2011-09-19 13 views
50

Ho un'app per iOS che voglio convertire utilizzando ARC. Vorrei solo utilizzare lo strumento di migrazione, ma mi viene costantemente eliminato durante la fase di anteprima.Come abilitare ARC in tutto il progetto in Xcode 4.2

So che posso utilizzare la direttiva -fobjc-arc compilatore su una base di file per file, ma voglio consentire ARC su tutto il progetto, quindi spegnere singole classi utilizzando -fno-objc-arc.

I nuovi progetti in 4.2 possono utilizzare ARC di default, quindi deve esserci un interruttore da qualche parte.

Qualcuno mi può aiutare a convertire il progetto per ARC

risposta

65

"ARC è disponibile in Xcode 4.2, attualmente in versione beta, e solo quando compilazione con Clang (alias "compilatore di Apple LLVM"). L'impostazione è chiamato, abbastanza ovviamente, "Objective-C di riferimento conteggio automatico". Accenderlo, e il gioco è fatto.

Se stai lavorando su codice esistente, la modifica di questa impostazione produrrà una quantità enorme di errori ARC non solo gestisce la memoria per te, ma ti impedisce di provare a farlo da solo. È illegale inviare manualmente conserva/rilascia/autorelease quando si utilizza ARC. Dal momento che il normale codice Cocoa non ARC è cosparso di questa roba, avrai un sacco di errori .

Fortunatamente, Xcode offre uno strumento per convertire il codice esistente. Seleziona Modifica -> Refactor ... -> Converti in Objective-C ARC ... e Xcode ti guiderà attraverso la conversione del codice. . Anche se ci possono essere alcune situazioni in cui si ha bisogno di aiuto per capire cosa fare, il processo dovrebbe essere in gran parte automatico"

ho preso che da questo link, mi ha aiutato molto: http://www.mikeash.com/pyblog/friday-qa-2011-09-30-automatic-reference-counting.html

+0

Non "in gran parte automatico" per la mia parte, ho appena trascorso circa un'ora o più per liberarsi di conserve e autoreleases, qual è il punto di questo 'Converti in Objective-C ARC'? Che cosa fa? – PaulG

+0

Sei corretto, hai ancora bisogno di rimuovere manualmente i ritegni e le versioni. Non sono sicuro che fosse l'obiettivo delle mele per costringerti a vedere cosa non ti serve più o se era troppo incline a Xcode per rimuoverli tutti si. – RyanG

48

Seleziona il tuo progetto o di destinazione e poi andare a impostazioni di generazione e sotto la sezione di Apple LLVM compilatore 3.0 -. Lingua si vedrà l'opzione Objective-C di riferimento conteggio automatico

0.123.
+0

L'impostazione appena sotto ARC per 'Garbage Collection', è quella legata ad ARC? – raffian

+1

@SAFX, no. ARC e GC sono due cose completamente diverse. –

+1

vale anche per xcode 4.6? – topwik

5

Per il traino, in Xcode 4.6 è necessario cercare "CLANG_ENABLE_OBJC_ARC" e quindi modificarlo su "Sì" per abilitare.

Problemi correlati