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

Korzystam z ARC z powodzeniem w moim projekcie. Jednak natknąłem się na kilka plików (np. w testach jednostkowych i mockach obiektów), w których zasady ARC są teraz nieco bardziej kruche. Pamiętam, że słyszałem, że był sposób, aby wyłączyć ARC na podstawie pliku, choć nie byłem w stanie znaleźć tej opcji.

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

Author: Nikolai Ruhe, 2011-07-11

18 answers

Możliwe jest wyłączenie ARC dla poszczególnych plików poprzez dodanie znacznika kompilatora -fno-objc-arc dla tych plików.

Dodajesz flagi kompilatora w Targets - > Build Phases - > Compile Sources. Musisz dwukrotnie kliknąć na prawej kolumnie wiersza pod flagi kompilatora . Możesz również 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. (Zauważ, że edycja wielu plików nadpisze wszelkie flagi, które mogą już mam.)

Stworzył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 referencji dla niektórych plików

 2138
Author: jaminguy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:31:16

Wyłączanie ARC na wielu plikach:

  1. Wybierz żądane pliki w fazie docelowej / kompilacji / kompilacji źródeł w Xcode
  2. NACIÅšNIJ ENTER
  3. Type - fno-objc-arc
  4. Naciśnij Enter lub gotowe

;)

Tutaj wpisz opis obrazka

 454
Author: Tibidabo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-06 01:57:37

Dla Xcode 4.3 łatwiejszym sposobem może być: Edycja / Refactor / Konwertuj do objective-C ARC, a następnie odszukaj pliki, których nie chcesz przekonwertować. Uważam to za to samo, co użycie powyższej flagi kompilatora.

 42
Author: Jingjie Zhan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-18 22:28:26

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

Wykonaj poniższe kroki:

Wyłączanie ARC na pojedynczym pliku:

  1. Wybierz żądane pliki w fazie docelowej / kompilacji / kompilacji źródeł w Xcode

  2. Wybierz .m plik, który chcesz zrobić to nie-ARC NACIŚNIJ ENTER Type - fno-objc-arc

Non Arc file to Arc project flag : -fno-objc-arc

Plik ARC do flagi Projektu non ARC : -fobjc-arc

 34
Author: Dipak Narigara,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-12 17:39:59

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

  1. open "Build phases" - > "Compile sources"
  2. Wybierz pliki z "left_mouse" + " cmd " (dla oddzielonych plików) lub + "shift" (dla plików zgrupowanych-wybierz pierwszy i ostatni)
  3. naciśnij "enter"
  4. wklej -fno-objc-arc
  5. naciśnij ponownie "enter"
  6. Zysk!
 33
Author: digipeople,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-26 07:16:56

Wystarczy użyć flagi -fno-objc-arc W Build Phases>Compile Sources

 20
Author: Rahul Gupta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-04 12:57:32
  1. Wybierz projekt Xcode
  2. Idź do celów
  3. wybierz sekcjÄ™ fazy budowania
  4. wewnątrz sekcji fazy budowania wybierz źródła kompilacji.
  5. Wybierz plik, którego nie chcesz wyłączyć ARC i dodaj -fno-objc-arc

Wyłącz ARC dla określonego pliku

 11
Author: user2538944,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-20 09:03:57

Możliwe jest wyłączenie ARC (automatycznego zliczania referencji) dla konkretnego pliku w Xcode.

Wybierz cel - > fazy budowania - > Skompiluj Źródła - > Wybierz plik (podwójne kliknięcie) - > Dodaj "-fno-objc-arc" do wyskakującego okna.

Spotkałem się z taką sytuacją w używaniu plików "Reachibility".

Jest to pokazane na poniższym rysunku:

Tutaj wpisz opis obrazka

 11
Author: Jayprakash Dubey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-20 14:24:34

Use-fno-objc-arc dla każdego pliku w fazie budowania

 9
Author: Manish Jain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-25 10:24:05

Cztery obowiązkowe kroki, jak wyjaśniono w tym wideo

    //1. Select desired files
    //2. Target/Build Phases/Compile Sources
    //3. Type -fno-objc-arc
    //4. Done
 9
Author: user2554822,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-21 19:16:31

Po prostu postępuj zgodnie z zrzutem ekranu i wprowadź -fno-objc-arc.

Tutaj wpisz opis obrazka

 5
Author: Tunvir Rahman Tusher,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-02 15:08:18

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 Inspektora. Jest to niezbędne, jeśli planujesz korzystać z Cloud Build.Tutaj wpisz opis obrazka

 4
Author: greenland,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-18 21:37:55

Dodaj flagÄ™ "- fno-objc-arc".

Proste kroki : App>Targets>Build Phases>Compile Sources> add flag after class "- fno-objc-arc"

 3
Author: Manoj Chandel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-10 14:25:41

Myślę, że wszystkie inne odpowiedzi wyjaśniają, jak wyłączyć MRC (Manual Reference Count) i włączyć ARC (Automatic Reference Count). Aby użyć MRC (Manual Reference Count) tzn. wyłączenie ARC(Automatic Reference Count) na wielu plikach:

  1. Wybierz żądane pliki w fazie docelowej / kompilacji / kompilacji źródeł w Xcode
  2. NACIÅšNIJ ENTER
  3. Type-fobjc-arc
  4. naciśnij Enter lub Gotowe
 3
Author: Vin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-30 10:46:36

Wystarczy użyć flagi-fno-objc-arc w fazie budowania>kompilacji źródeł przed plikami, do których nie chcesz stosować Arc.

 1
Author: C_compnay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-18 11:19:39
  1. Wybierz projekt -> cele -> fazy budowania - > źródła kompilatora
  2. Wybierz plik - > flagi kompilatora
  3. add-fno-objc-arc
 -1
Author: Mnsd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-07 10:15:51

Przejdź do App -> następnie Targets -> Build Phases - > Compile Source

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.

 -2
Author: adijazz91,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-24 10:03:34

Następny krok, aby włączyć wyłączanie ARC

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

 -2
Author: annu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-09 07:25:38