¿Cómo puedo desactivar ARC para un solo archivo en un proyecto?

1342

Estoy usando ARC con éxito en mi proyecto. Sin embargo, he encontrado algunos archivos (por ejemplo, en pruebas unitarias y objetos simulados) donde las reglas de ARC son un poco más frágiles en este momento. Recuerdo haber escuchado que había una manera de deshabilitar ARC por archivo, aunque no he podido encontrar esta opción.

es posible? ¿Cómo deshabilito ARC por archivo?

casademora
fuente

Respuestas:

2168

Es posible deshabilitar ARC para archivos individuales agregando el -fno-objc-arcindicador del compilador para esos archivos.

Agrega banderas de compilación en Objetivos -> Fases de compilación -> Compilar orígenes. Debe hacer doble clic en la columna derecha de la fila debajo de Banderas del compilador . También puede agregarlo a varios archivos manteniendo presionado el botón cmd para seleccionar los archivos y luego presionando Intro para que aparezca el cuadro de edición de la bandera. (Tenga en cuenta que la edición de varios archivos sobrescribirá cualquier marca que ya tenga).

Creé un proyecto de muestra que tiene un ejemplo: https://github.com/jaminguy/NoArc

xcode

Consulte esta respuesta para obtener más información: Deshabilitar el recuento automático de referencias para algunos archivos

jaminguy
fuente
58
Entonces, el lugar para agregar esta bandera no es demasiado intuitivo. Pero, en Xcode 4, en las fases de compilación y compilación de fuentes, en realidad hay dos columnas. Uno para el nombre del archivo y otro para los indicadores de compilación para ese archivo. Aquí es donde ingresa este indicador de compilador específico.
casademora
3
¿Se puede especificar para un directorio, es decir, para todos los archivos en un directorio? ¿Qué pasa con un grupo?
ma11hew28
44
No hay directorios Solo un archivo a la vez en la configuración de compilación :(
casademora
13
@casademora, no puedes obtener suficientes votos a favor para esta información. Gracias.
theTRON
26
@casademora puede seleccionar varios archivos a la vez, pero no haga doble clic, pero presione RETORNO. luego simplemente agregue -fno-objc-arcy se agregará a todos los archivos seleccionados. edit acaba de ver la respuesta debajo de esta :(
pkyeck
460

Deshabilitar ARC en archivos MÚLTIPLES:

  1. Seleccione los archivos deseados en Target / Build Fases / Compile Sources en Xcode
  2. PRESIONE ENTER
  3. Escriba -fno-objc-arc
  4. Presione Entrar o Listo

;)

ingrese la descripción de la imagen aquí

Tibidabo
fuente
2
¡Gracias! He estado buscando esta característica durante mucho tiempo. Hacer doble clic no funciona cuando se seleccionan varias filas, pero presionar enter sí. Tan raro.
bobmoff
44
Oh wow. Gastaría todo mi karma para votar esto de nuevo. ¡Gracias por compartir!
jemmons
Parece que esto ya no funciona en Xcode 4.3.3. hacer doble clic o presionar enter en los archivos seleccionados no muestra el cuadro de diálogo para colocar el indicador -fno-ojbc-arc, ¿alguien tiene una solución para esto?
tom
Tenía 4.3.3 y ahora 4.4 DP7 y todavía funciona bien. Intente reiniciar Xcode, reiniciando la máquina y reparando los permisos.
Tibidabo
44

Para Xcode 4.3, la forma más fácil podría ser: Editar / Refactorizar / Convertir a objetivo-C ARC, luego marque los archivos que no desea convertir. De esta manera, encuentro lo mismo que usar el indicador del compilador anterior.

Jingjie Zhan
fuente
36

Es una forma muy simple de hacer que un archivo individual no sea de arco.

Siga los pasos a continuación:

Deshabilitar ARC en archivo individual:

  1. Seleccione los archivos deseados en Target / Build Fases / Compile Sources en Xcode

  2. Seleccione el archivo .m que desea que sea NO ARCO PRESIONE ENTER Escriba -fno-objc-arc

Indicador de archivo no ARC a proyecto ARC: -fno-objc-arc

Archivo ARC a indicador de proyecto no ARC: -fobjc-arc

Dipak Narigara
fuente
35

Nota: si desea deshabilitar ARC para muchos archivos , debe:

  1. abrir "Fases de compilación" -> "Compilar fuentes"
  2. seleccione archivos con "left_mouse" + "cmd" (para archivos separados) o + "shift" (para archivos agrupados - seleccione primero y último)
  3. presione "enter"
  4. pegar -fno-objc-arc
  5. presione "enter" nuevamente
  6. ¡lucro!
digipeople
fuente
22

Solo usa la -fno-objc-arcbandera en Build Phases>Compile Sources

Rahul Gupta
fuente
13
  1. Seleccionar proyecto Xcode
  2. Ir a objetivos
  3. Seleccione la sección Fases de construcción
  4. Dentro de la sección de fases de construcción, seleccione las fuentes de compilación.
  5. Seleccione el archivo que no desea deshabilitar ARC y agregue -fno-objc-arc

Deshabilitar ARC para un archivo en particular

usuario2538944
fuente
13

Es posible deshabilitar ARC (conteo automático de referencias) para un archivo en particular en Xcode.

Seleccione Target -> Build Fases -> Compile Sources -> Select File (doble click) -> Add "-fno-objc-arc" a la ventana emergente.

Encontré esta situación al usar archivos de "Reachibility".

Esto se muestra en la siguiente figura:

ingrese la descripción de la imagen aquí

Jayprakash Dubey
fuente
11

use -fno-objc-arc para cada archivo en las fases de compilación

Amit Agrawal
fuente
11

Los cuatro pasos obligatorios explicados en este video

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

Simplemente siga la captura de pantalla e ingrese -fno-objc-arc .

ingrese la descripción de la imagen aquí

Tunvir Rahman Tusher
fuente
6

Si está utilizando Unity, no necesita cambiar esto en Xcode, puede aplicar un indicador de compilación en los metadatos para los archivos específicos, justo dentro de Unity. Simplemente selecciónelos en el panel Proyecto y aplique desde el panel Inspector. Esto es esencial si planea usar Cloud Build.ingrese la descripción de la imagen aquí

Groenlandia
fuente
5

Agregue el indicador "-fno-objc-arc".

Sencillos pasos a seguir: Aplicación> Objetivos> Fases de compilación> Compilar fuentes> agregar indicador después de la clase "-fno-objc-arc"

Manoj Chandel
fuente
5

Creo que todas las otras respuestas están explicando cómo deshabilitar MRC (Recuento de referencia manual) y habilitar ARC (Recuento de referencia automático). Para usar MRC (recuento de referencia manual), es decir, deshabilitar ARC (recuento de referencia automático) en archivos MÚLTIPLES:

  1. Seleccione los archivos deseados en Target / Build Fases / Compile Sources en Xcode
  2. PRESIONE ENTER
  3. Escriba -fobjc-arc
  4. Presione Entrar o Listo
Vin
fuente
2

Simplemente use el indicador -fno-objc-arc en Build Phases> Compile Sources delante de los archivos a los que no desea que se aplique ARC.

C_compnay
fuente
-1
  1. seleccione proyecto -> objetivos -> fases de construcción -> fuentes del compilador
  2. seleccionar archivo -> banderas del compilador
  3. agregar -fno-objc-arc
Mnsd
fuente
-2

Vaya a Aplicación -> luego Objetivos -> Fases de compilación -> Compilar fuente

Ahora, seleccione el archivo en el que desea deshabilitar ARC

pegue este fragmento "-fno-objc-arc" Después de pegar, presione ENTRAR

en cada archivo donde desea deshabilitar ARC.

adijazz91
fuente
55
Su respuesta no proporciona ninguna adición a esta vieja pregunta.
vikingosegundo
-2

Siguiente paso para habilitar deshabilitar ARC

Seleccione el proyecto Xcode Ir a destinos Seleccione la sección Fases de construcción Dentro de la sección de fases de construcción seleccione las fuentes de compilación. Seleccione el archivo que no desea deshabilitar ARC y agregue -fno-objc-arc

annu
fuente
1
Su respuesta no proporciona ninguna adición a esta vieja pregunta.
jomafer
Qué adición necesita. Si sabes mejor que proporcionarnos.
annu
No te menosprecié. Es solo que esta pregunta se hizo el 11 de julio de 11 a las 5:21. Hay demasiadas respuestas con la misma respuesta que no aportan ninguna información útil ... Sospecho que alguien downvote que por esa razón ...
jomafer
¿Me puede dar un breve resumen?
annu