Come posso disabilitare ARC per un singolo file in un progetto?


1342

Sto usando ARC con successo nel mio progetto. Tuttavia, ho riscontrato alcuni file (ad esempio, in unit test e oggetti finti) in cui le regole di ARC sono un po 'più fragili in questo momento. Ricordo di aver sentito che c'era un modo per disabilitare ARC in base al file, sebbene non sia stato possibile trovare questa opzione.

È possibile? Come disabilitare ARC in base al file?


Risposte:


2168

È possibile disabilitare ARC per i singoli file aggiungendo il -fno-objc-arcflag del compilatore per quei file.

Aggiungi flag del compilatore in Target -> Crea fasi -> Compila origini. Devi fare doppio clic sulla colonna destra della riga sotto Flag del compilatore . Puoi anche aggiungerlo a più file tenendo premuto il pulsante cmd per selezionare i file e quindi premendo invio per visualizzare la casella di modifica della bandiera. (Nota che la modifica di più file sovrascriverà qualsiasi flag che potrebbe già avere.)

Ho creato un progetto di esempio che ha un esempio: https://github.com/jaminguy/NoArc

Xcode

Vedi questa risposta per maggiori informazioni: Disabilita il conteggio dei riferimenti automatico per alcuni file


58
Quindi, il posto dove aggiungere questo flag non è troppo intuitivo. Ma, in Xcode 4, nelle fasi di compilazione e compilazione delle fonti, in realtà ci sono due colonne. Uno per il nome del file e un altro per i flag di compilazione per quel file. Qui è dove si inserisce questo flag di compilatore specifico.
Casademora,

3
Puoi specificare per una directory, cioè per tutti i file in una directory? Che dire di un gruppo?
ma11hew28,

4
Nessuna directory. Solo un singolo file alla volta nelle impostazioni di compilazione :(
casademora

13
@casademora non puoi ottenere abbastanza voti per questa informazione. Grazie.
theTRON,

26
@casademora puoi selezionare più file contemporaneamente - ma poi non fare doppio clic ma premi INVIO. quindi basta aggiungere il -fno-objc-arce verrà aggiunto a tutti i file selezionati. modifica appena visto la risposta sotto questa :(
pkyeck

460

Disabilita ARC su file MULTIPLI:

  1. Seleziona i file desiderati su Target / Crea fasi / Compila fonti in Xcode
  2. PREMERE INVIO
  3. Digitare -fno-objc-arc
  4. Premi Invio o Fine

;)

inserisci qui la descrizione dell'immagine


2
Grazie! Sono alla ricerca di questa funzionalità da molto tempo. Fare doppio clic non funziona quando si selezionano più righe, ma premendo invio funziona. Così strano.
bobmoff,

4
Oh wow Spenderei tutto il mio karma per votarlo di nuovo. Grazie per la condivisione!
jemmons,

questo sembra non funzionare più su Xcode 4.3.3. fare doppio clic o premere invio sui file selezionati non fa apparire la finestra di dialogo per inserire il flag -fno-ojbc-arc, qualcuno ha una soluzione per questo?
Tom,

Avevo 4.3.3 e ora 4.4 DP7 e funziona ancora bene. Prova a riavviare Xcode, riavviare la macchina e riparare le autorizzazioni.
Tibidabo,

44

Per Xcode 4.3 il modo più semplice potrebbe essere: Modifica / Rifattore / Converti in ARC-obiettivo-C, quindi selezionare i file che non si desidera convertire. Trovo in questo modo lo stesso che usare il flag del compilatore sopra.


36

È un modo molto semplice per rendere i singoli file non arcuati.

Seguire i passaggi seguenti:

Disabilita ARC su singolo file:

  1. Seleziona i file desiderati su Target / Crea fasi / Compila fonti in Xcode

  2. Selezionare il file .m che si desidera renderlo NON-ARC PREMERE INVIO Digitare -fno-objc-arc

Flag da file non ARC a progetto ARC: -fno-objc-arc

Da file ARC a flag di progetto non ARC: -fobjc-arc


35

Nota: se si desidera disabilitare ARC per molti file , è necessario:

  1. apri "Fasi di costruzione" -> "Compila fonti"
  2. selezionare i file con "left_mouse" + "cmd" (per file separati) o + "shift" (per file raggruppati: selezionare il primo e l'ultimo)
  3. premere Invio"
  4. incolla -fno-objc-arc
  5. premere di nuovo "invio"
  6. profitto!


13
  1. Seleziona il progetto Xcode
  2. Vai agli obiettivi
  3. Seleziona la sezione Fasi di costruzione
  4. All'interno della sezione fasi di compilazione selezionare le fonti di compilazione.
  5. Seleziona il file che non vuoi disabilitare ARC e aggiungi -fno-objc-arc

Disabilita ARC per un determinato file


13

È possibile disabilitare ARC (Automatic Reference Counting) per file particolari in Xcode.

Seleziona Target -> Crea fasi -> Compila origini -> Seleziona file (doppio clic) -> Aggiungi "-fno-objc-arc" alla finestra pop-up.

Avevo riscontrato questa situazione utilizzando i file "Raggiungibilità".

Questo è mostrato nella figura seguente:

inserisci qui la descrizione dell'immagine



11

I quattro passi obbligatori, come spiegato in questo video

    //1. Select desired files
    //2. Target/Build Phases/Compile Sources
    //3. Type -fno-objc-arc
    //4. Done


6

Se si utilizza Unity, non è necessario modificarlo in Xcode, è possibile applicare un flag di compilazione nei metadati per i file specifici, proprio all'interno di Unity. Basta selezionarli nel pannello Progetto e applicare dal pannello Ispettore. Questo è essenziale se prevedi di utilizzare Cloud Build.inserisci qui la descrizione dell'immagine


5

Aggiungi il flag "-fno-objc-arc".

Semplici passaggi: App> Target> Crea fasi> Compila origini> aggiungi flag dopo la classe "-fno-objc-arc"


5

Penso che tutte le altre risposte spieghino come disabilitare MRC (conteggio dei riferimenti manuali) e abilitare ARC (conteggio dei riferimenti automatici). Per utilizzare MRC (conteggio dei riferimenti manuali), ad esempio disabilitando ARC (conteggio dei riferimenti automatici) su file MULTIPLI:

  1. Seleziona i file desiderati su Target / Crea fasi / Compila fonti in Xcode
  2. PREMERE INVIO
  3. Digita -fobjc-arc
  4. Premi Invio o Fine

2

Basta usare il flag -fno-objc-arc in Fasi di compilazione> Compila origini prima dei file a cui non si desidera applicare ARC.


-1
  1. seleziona progetto -> target -> fasi di costruzione -> fonti del compilatore
  2. seleziona il file -> flag del compilatore
  3. aggiungi -fno-objc-arc

-2

VAI all'app -> quindi Target -> Crea fasi -> Compila sorgente

Ora, selezionare il file in cui si desidera disabilitare ARC

incolla questo snippet "-fno-objc-arc" Dopo aver incollato premi INVIO

in ogni file in cui si desidera disabilitare ARC.


5
la tua risposta non prevede alcuna aggiunta a questa vecchia domanda.
vikingosegundo,

-2

Seguire il passaggio per abilitare disabilitare ARC

Seleziona progetto Xcode Vai agli obiettivi Seleziona la sezione Fasi di costruzione All'interno della sezione Fasi di costruzione seleziona le fonti di compilazione. Seleziona il file che non vuoi disabilitare ARC e aggiungi -fno-objc-arc


1
la tua risposta non prevede alcuna aggiunta a questa vecchia domanda.
Jomafer,

Quale aggiunta necessaria. se sai meglio di fornirci.
annu,

Non ti ho votato. È solo che questa domanda è stata posta l'11 luglio 11 alle 5:21. Ci sono troppe risposte con la stessa risposta che non aggiungono alcuna informazione utile ... Ho il sospetto che qualcuno ti abbia
votato

puoi darmi qualche riassunto al riguardo.
annu,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.