7

C'è un modo per chiedere al compilatore se ARC è attivato e quindi compilare condizionatamente in base a tale valore? Per esempio, ho un protocollo:Compilazione condizionale quando si utilizza ARC

@protocol ProtocolA 

@required 
-(void)protocolMethodOne 

@optional 
-(void)protocolMethodTwo; 

@end 

Se sto usando ARC, mi piacerebbe fare protocolMethodA opzionale quando si utilizza ARC, e richiesto quando non si utilizza ARC. Questo perché uno dei motivi principali per l'utilizzo di questo metodo è dealloc dell'istanza dell'oggetto.

Detto questo, ecco cosa vorrei per accadere:

@protocol ProtocolA 

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

@optional 
-(void)protocolMethodTwo; 

@end 

risposta

14

Si dovrebbe fare #if __has_feature(objc_arc) che si espanderà a 1 nel caso di ARC essere abilitato.

Questo è da ARC docs da Clang.

+0

Impressionante. Sembrava tutto questo e non riusciva a trovarlo. Funziona alla grande! – FreeAsInBeer

Problemi correlati