Jak mogę wyłączyć ARC dla pojedynczego pliku w projekcie?


1341

Z powodzeniem używam ARC w moim projekcie. Jednak napotkałem kilka plików (np. W testach jednostkowych i próbnych obiektach), w których reguły ARC są teraz nieco bardziej kruche. Pamiętam, że istniała możliwość wyłączenia ARC dla poszczególnych plików, chociaż nie mogłem znaleźć tej opcji.

czy to możliwe? Jak mogę wyłączyć ARC dla poszczególnych plików?


Odpowiedzi:


2167

Możliwe jest wyłączenie ARC dla pojedynczych plików poprzez dodanie -fno-objc-arcflagi kompilatora dla tych plików.

Dodajesz flagi kompilatora w Celach -> Fazy kompilacji -> Kompiluj źródła. Musisz dwukrotnie kliknąć prawą kolumnę wiersza pod Flagi kompilatora . Możesz także dodać go do wielu plików, przytrzymując przycisk cmd, aby wybrać pliki, a następnie naciskając klawisz Enter, aby wyświetlić pole edycji flagi. (Pamiętaj, że edycja wielu plików zastąpi wszystkie flagi, które już mogą mieć).

Utworzyłem przykładowy projekt, który ma przykład: https://github.com/jaminguy/NoArc

xcode

Zobacz tę odpowiedź, aby uzyskać więcej informacji: Wyłącz automatyczne zliczanie odniesień dla niektórych plików


57
Miejsce do dodania tej flagi nie jest więc zbyt intuicyjne. Ale w Xcode 4, w fazach kompilacji i źródłach kompilacji, w rzeczywistości istnieją dwie kolumny. Jeden dla nazwy pliku, a drugi dla flag kompilacji dla tego jednego pliku. Tutaj wpisujesz konkretną flagę kompilatora.
casademora

3
Czy możesz określić dla katalogu, tj. Dla wszystkich plików w katalogu? Co z grupą?
ma11hew28,

4
Brak katalogów. Tylko jeden plik na raz w ustawieniach kompilacji :(
casademora

13
@casademora nie można uzyskać wystarczającej liczby głosów pozytywnych dla tej informacji. Dziękuję Ci.
theTRON

26
@casademora możesz wybrać wiele plików jednocześnie - ale nie klikaj dwukrotnie, ale naciśnij RETURN. następnie po prostu dodaj -fno-objc-arci zostanie dodany do wszystkich wybranych plików. edytuj właśnie widziałem odpowiedź poniżej tego :(
pkyeck

460

Wyłącz ARC dla MULTIPLE plików:

  1. Wybierz żądane pliki na Target / Build Phases / Compile Sources in Xcode
  2. NACIŚNIJ ENTER
  3. Wpisz -fno-objc-arc
  4. Naciśnij Enter lub Gotowe

;)

wprowadź opis zdjęcia tutaj


2
Dzięki! Długo szukałem tej funkcji. Dwukrotne kliknięcie nie działa po wybraniu wielu wierszy, ale naciśnięcie enter działa. Bardzo dziwne.
bobmoff

4
Och wow. Spędziłbym całą moją karmę, aby ponownie to głosować. Dzięki za udostępnienie!
jemmons

wydaje się, że to już nie działa na Xcode 4.3.3. dwukrotne kliknięcie lub naciśnięcie Enter na wybranych plikach nie wyświetla okna dialogowego do wprowadzenia flagi -fno-ojbc-arc, ktoś ma na to sposób obejścia?
tom

Miałem 4.3.3, a teraz 4.4 DP7 i nadal działa dobrze. Spróbuj ponownie uruchomić Xcode, ponownie uruchomić maszynę i uprawnienia do naprawy.
Tibidabo

44

W przypadku Xcode 4.3 najłatwiejszym sposobem może być: Edycja / Refaktoryzacja / Konwertuj na ARC celu C, a następnie zaznacz pliki, których nie chcesz konwertować. Uważam, że w ten sam sposób korzystam z powyższej flagi kompilatora.


36

Jest to bardzo prosty sposób, aby pojedynczy plik nie był łukowy.

Wykonaj poniższe kroki:

Wyłącz ARC dla pojedynczego pliku:

  1. Wybierz żądane pliki na Target / Build Phases / Compile Sources in Xcode

  2. Wybierz plik .m, który chcesz ustawić jako NON-ARC PRESS ENTER Wpisz -fno-objc-arc

Plik inny niż ARC do flagi projektu ARC: -fno-objc-arc

Plik ARC do flagi projektu spoza ARC: -fobjc-arc


35

Uwaga: jeśli chcesz wyłączyć ARC dla wielu plików , musisz:

  1. otwórz „Fazy budowania” -> „Kompiluj źródła”
  2. wybierz pliki za pomocą „left_mouse” + „cmd” (dla oddzielnych plików) lub + „shift” (dla zgrupowanych plików - wybierz pierwszy i ostatni)
  3. naciśnij enter"
  4. pasta -fno-objc-arc
  5. naciśnij ponownie „enter”
  6. zysk!


13
  1. Wybierz projekt Xcode
  2. Idź do celów
  3. Wybierz sekcję Fazy budowania
  4. W sekcji faz kompilacji wybierz źródła kompilacji.
  5. Wybierz plik, którego nie chcesz wyłączać ARC i dodaj -fno-objc-arc

Wyłącz ARC dla określonego pliku


13

Możliwe jest wyłączenie ARC (Automatic Reference Counting) dla konkretnego pliku w Xcode.

Wybierz Cel -> Fazy kompilacji -> Kompiluj źródła -> Wybierz plik (podwójne kliknięcie) -> Dodaj „-fno-objc-arc” do wyskakującego okna.

Zetknąłem się z tą sytuacją podczas korzystania z plików „Reachibility”.

Jest to pokazane na poniższym rysunku:

wprowadź opis zdjęcia tutaj



11

Cztery etapy obowiązkowe opisane w tym filmie

    //1. Select desired files
    //2. Target/Build Phases/Compile Sources
    //3. Type -fno-objc-arc
    //4. Done


6

Jeśli używasz Unity, nie musisz tego zmieniać w Xcode, możesz zastosować flagę kompilacji w metadanych dla określonych plików, bezpośrednio w Unity. Wystarczy wybrać je w panelu Projekt i zastosować z panelu Inspektor. Jest to niezbędne, jeśli planujesz korzystać z Cloud Build.wprowadź opis zdjęcia tutaj


5

Dodaj flagę „-fno-objc-arc”.

Proste kroki: Aplikacja> Cele> Fazy budowy> Kompiluj źródła> dodaj flagę po klasie „-fno-objc-arc”


5

Myślę, że wszystkie pozostałe odpowiedzi wyjaśniają, jak wyłączyć MRC (ręczne zliczanie referencji) i włączyć ARC (automatyczne zliczanie referencji). Aby użyć MRC (Manual Reference Count), tj. Wyłączyć ARC (Automatic Reference Count) w plikach MULTIPLE:

  1. Wybierz żądane pliki na Target / Build Phases / Compile Sources in Xcode
  2. NACIŚNIJ ENTER
  3. Wpisz -fobjc-arc
  4. Naciśnij Enter lub Gotowe

2

Wystarczy użyć flagi -fno-objc-arc w Fazy kompilacji> Kompiluj źródła przed plikami, do których nie chcesz stosować ARC.


-1
  1. wybierz projekt -> cele -> fazy budowy -> źródła kompilatora
  2. wybierz plik -> flagi kompilatora
  3. dodaj -fno-objc-arc

-2

PRZEJDŹ do aplikacji -> następnie Cele -> Kompiluj fazy -> Kompiluj źródło

Teraz wybierz plik, w którym chcesz wyłączyć ARC

wklej ten fragment „-fno-objc-arc” Po wklejeniu naciśnij ENTER

w każdym pliku, w którym chcesz wyłączyć ARC.


5
twoja odpowiedź nie zawiera żadnego uzupełnienia tego starego pytania.
vikingosegundo

-2

Po kroku, aby włączyć wyłączyć ARC

Wybierz projekt Xcode Przejdź do celów Wybierz sekcję Fazy kompilacji W sekcji faz budowania wybierz źródła kompilacji. Wybierz plik, którego nie chcesz wyłączać ARC i dodaj -fno-objc-arc


1
twoja odpowiedź nie zawiera żadnego uzupełnienia tego starego pytania.
jomafer

Jakiego dodatku potrzebujesz. jeśli wiesz lepiej niż nas.
annu

Nie głosowałem cię. Właśnie to pytanie zostało zadane w lipcu 11 '11 o 5:21. Istnieje zbyt wiele odpowiedzi z tą samą odpowiedzią, które nie dodają żadnych użytecznych informacji ... Podejrzewam, że ktoś z tego powodu
zagłosował

czy możesz mi powiedzieć coś na ten temat.
annu
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.