2011-11-15 11 views
10

Czy istnieje #pragma (lub w inny sposób konstrukcja) do jawnego włączania automatycznego liczenia odwołań (ARC) w pliku źródłowym Objective-C (lub Objective-C++)? Jeszcze lepiej, jeśli plik źródłowy może spowodować, że kompilacja się nie powiedzie, jeśli ARC nie jest włączone.Pragma, aby jawnie włączyć ARC?

Zaczynam mieć wiele plików źródłowych tylko ARC, które mogą być potencjalnie udostępniane innym projektom. Większość z nich zawiera metody kategorii rozszerzające wbudowane klasy. Po prostu nie chcę ich przypadkowo włączyć do projektu niezwiązanego z ARC i zaczyna wyciekać z pamięci.

Z góry dziękuję!

+0

Nicea pytanie. Spróbuj otworzyć radar z Apple. Prawdopodobnie sposób na podniesienie błędu, jeśli kod źródłowy nie został skompilowany w trybie ARC, byłby korzystny dla programistów. O ile mi wiadomo, nie ma instrukcji typu arc-only, które powodują błąd podczas kompilacji z ustawieniem -fno-obj-arc. – viggio24

Odpowiedz

11

O ile mogę powiedzieć, nie ma sposobu, aby wyraźnie włączyć lub wyłączyć ARC.

Możliwe jest jednak wykrycie, czy jest włączona. Po prostu dodaj poniższy fragment do dowolnego pliku wymagającego 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 

Więcej informacji:
http://clang.llvm.org/docs/AutomaticReferenceCounting.html
http://clang.llvm.org/docs/LanguageExtensions.html#__has_feature_extension