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?

casademora
źródło

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

jaminguy
źródło
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

Tibidabo
źródło
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.

Jingjie Zhan
źródło
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

Dipak Narigara
źródło
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!
digipeople
źródło
22

Wystarczy użyć -fno-objc-arcflagi w Build Phases>Compile Sources

Rahul Gupta
źródło
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

użytkownik2538944
źródło
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

Jayprakash Dubey
źródło
11

użyj -fno-objc-arc dla każdego pliku w fazie kompilacji

Amit Agrawal
źródło
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
użytkownik2554822
źródło
8

Po prostu wykonaj zrzut ekranu i wprowadź -fno-objc-arc .

wprowadź opis zdjęcia tutaj

Tunvir Rahman Tusher
źródło
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

Grenlandia
źródło
5

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

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

Manoj Chandel
źródło
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
Vin
źródło
2

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

C_compnay
źródło
-1
  1. wybierz projekt -> cele -> fazy budowy -> źródła kompilatora
  2. wybierz plik -> flagi kompilatora
  3. dodaj -fno-objc-arc
Mnsd
źródło
-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.

adijazz91
źródło
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

annu
źródło
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