2011-11-15 19 views
10

C'è un #pragma (o altrimenti qualche costrutto) per abilitare esplicitamente il conteggio del riferimento automatico (ARC) in un file sorgente Objective-C (o Objective-C++)? Ancora meglio se il file sorgente può causare errori di compilazione se ARC non è abilitato.Pragma per abilitare esplicitamente ARC?

Sto iniziando ad avere un numero di file sorgente ARC solo potenzialmente condivisibili con altri progetti. Molti di questi contengono metodi di categoria per estendere le classi integrate. Solo che non voglio accidentalmente includerli in un progetto non ARC e inizia a perdere memoria.

Grazie in anticipo!

+0

Nizza domanda. Prova ad aprire un radar con Apple. Probabilmente avere un modo per far salire un errore se il codice sorgente non è compilato in modalità ARC sarebbe di beneficio per gli sviluppatori. Per quanto ne so, non ci sono istruzioni solo sull'arco che generano un errore quando sono compilate con -fno-obj-arc set. – viggio24

risposta

11

Per quanto posso dire, non c'è modo di abilitare o disabilitare esplicitamente ARC.

Tuttavia è possibile rilevare se è abilitato. Basta aggiungere il seguente snippet a qualsiasi file che richiede 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 

Maggiori informazioni:
http://clang.llvm.org/docs/AutomaticReferenceCounting.html
http://clang.llvm.org/docs/LanguageExtensions.html#__has_feature_extension