¿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?


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


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í


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.


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


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!


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


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í



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


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í


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"


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

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.


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

-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.


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


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.