7

¿Hay alguna manera de preguntar al compilador si ARC está activado y luego compilar condicionalmente según ese valor? Por ejemplo, tengo un protocolo:Compilación condicional al usar ARC

@protocol ProtocolA 

@required 
-(void)protocolMethodOne 

@optional 
-(void)protocolMethodTwo; 

@end 

Si estoy usando ARC, me gustaría hacer protocolMethodA opcional cuando se usa ARC, y cuando no se utiliza ARC. Esto se debe a que una de las principales razones para utilizar este método es desasignar la instancia del objeto.

Dicho esto, esto es lo que me gustaría pasar:

@protocol ProtocolA 

#ifdef SOME_ARC_VARIABLE 
    @optional 
#else 
    @required 
#endif 
-(void)protocolMethodOne 

@optional 
-(void)protocolMethodTwo; 

@end 

Respuesta

14

Debe hacer #if __has_feature(objc_arc) que se expandirá a 1 en el caso de Arco que es habilitado.

Esto es del ARC docs de Clang.

+0

Impresionante. Lo busqué todo y no pude encontrarlo. ¡Funciona genial! – FreeAsInBeer

Cuestiones relacionadas