2012-07-08 17 views
12

Creo un proyecto con soporte ARC utilizando el asistente de proyecto de Xcode. Comparado con un programa sin soporte ARC, no noté ninguna diferencia. ¿Hay alguna pista que pueda decirme si mi programa es compatible con ARC?¿Cómo puedo saber si mi programa tiene ARC habilitado o no?

estoy utilizando XCode 4.2.1 Build 4D502

+4

Esto es inusual: Ya tiene tres respuestas correctas por completo, útiles y únicas. :) –

Respuesta

25

Puede utilizar __has_feature, tal vez el registro si el proyecto tiene ARC en la consola de la siguiente manera:

#if __has_feature(objc_arc) 
    // ARC is On 
    NSLog(@"ARC on"); 

#else 
    // ARC is Off 
    NSLog(@"ARC off"); 

#endif 

Como alternativa, en lugar de registrar si ARC está encendido, intentar hacer el compilador elevar un error si ARC está encendido (o apagado) así:

#if ! __has_feature(objc_arc) 
    #error This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). 
#endif 
+0

¿No puedo encontrar el menú de Objetivos? ¿Es este un menú de XCode? – user705414

+0

"Objetivos" significa la entrada más alta con el nombre de su aplicación en el árbol de archivos de Xcode. – CodaFi

+0

Gracias qegal, no hay nada en mis banderas de compilación. No importa si selecciono usar ARC o no en el asistente. – user705414

5

o para probar una sola vez, añadir esto en su código:

NSString* dummy = [[[NSString alloc] init] autorelease]; 

Esto debería generar un error si está utilizando ARC. Si lo hace, ARC está habilitado, todo está bien y puede eliminarlo nuevamente.

18

Si solo quieres saber una vez si tu proyecto tiene ARC, sugiero usar la respuesta de jpalten. Si desea que su código solo se construya con ARC activado, le sugiero qegal.

Sin embargo, si desea saber en qué Xcode el ajuste vive:

  1. Seleccione su proyecto en el navegador. Esto abrirá el editor del proyecto.
  2. En el editor de proyectos, seleccione su objetivo.
  3. En el editor de proyectos, haga clic en Configuración de compilación (si no está ya seleccionada).
  4. En el editor de proyectos, haga clic en el cuadro de búsqueda y escriba OBJC_ARC.

Esto dejará una sola línea que muestra en configuración de generación, ya sea Objective-C de referencia automática Contando o CLANG_ENABLE_OBJC_ARC (dependiendo de si se está mostrando descripciones de ajuste o nombres). Si está configurado en SÍ, tiene ARC activado.

Esta es la selección de su objetivo de si se utiliza ARC. Tenga en cuenta que cada archivo se puede compilar con una configuración diferente. Esto es no lo que preguntaste, pero ya que tenemos tres respuestas pensé que me iría de un posible cuarto. :)

para ver qué archivos anular el ajuste ARC:

  1. Seleccione su proyecto en el navegador. Esto abrirá el editor del proyecto.
  2. En el editor de proyectos, seleccione su objetivo.
  3. En el editor de proyectos, haga clic en Fases de compilación (no Configuraciones de compilación).
  4. Amplíe Compile Sources build phase.

Aquí puede ver los indicadores del compilador para cada archivo. Los archivos con ese conjunto si se usa o no ARC incluirán -fno-objc-arc o -fobjc-arc, para especificar MRR o ARC respectivamente.

+0

marcado tan útil como también informa a los novatos que ARC puede ser anulado para ciertos archivos. Esto me puede ahorrar un montón de manipulación con mis archivos de clase pre-ARC. ¿Hay algún problema con esto? – cate

+0

Nada que el analizador estático no señale, principalmente, asegúrese de que el código no compilado por ARC siga las convenciones de recuento de referencias (con respecto a las cosas se devuelven como +1 o se liberan automáticamente). –

1

complemento "-fno-objc-ARC" del compilador para todos los archivos .m en las fases de construcción

Cuestiones relacionadas