2011-11-15 10 views
10

¿Existe un #pragma (o algún tipo de constructo) para habilitar explícitamente el recuento automático de referencias (ARC) en un archivo fuente Objective-C (u Objective-C++)? Aún mejor si el archivo de origen puede hacer que la compilación falle si ARC no está habilitado.Pragma para habilitar explícitamente ARC?

Estoy empezando a tener una serie de archivos fuente solo de ARC que se pueden compartir potencialmente con otros proyectos. La mayoría de estos contienen métodos de categoría para extender las clases incorporadas. Simplemente no quiero incluirlos accidentalmente en un proyecto que no sea ARC y empiece a filtrar memoria.

¡Gracias de antemano!

+0

Niza cuestión. Intenta abrir un radar con Apple. Probablemente tener una forma de provocar un error si el código fuente no está compilado en modo ARC sería beneficioso para los desarrolladores. Por lo que sé, no hay declaraciones de solo arco que surjan un error cuando se compilan con el conjunto -fno-obj-arc. – viggio24

Respuesta

11

Por lo que puedo decir, no hay forma de habilitar o deshabilitar explícitamente el ARC.

Sin embargo, es posible detectar si está habilitado. Simplemente agregue el siguiente fragmento a cualquier archivo que requiera ARC.

#ifndef __has_feature 
    #define __has_feature(x) 0 /* for non-clang compilers */ 
#endif 

#if !__has_feature(objc_arc) 
    #error ARC must be enabled! 
#endif 

Más información:
http://clang.llvm.org/docs/AutomaticReferenceCounting.html
http://clang.llvm.org/docs/LanguageExtensions.html#__has_feature_extension