Як я можу відключити ARC для одного файлу в проекті?


1342

Я успішно використовую ARC у своєму проекті. Однак я зіткнувся з кількома файлами (наприклад, в одиничних тестах та макетних об'єктах), де правила ARC зараз трохи крихкі. Я пам’ятаю, чуючи, що існував спосіб відключити ARC на основі файлів, однак я не зміг знайти цю опцію.

Чи можливо це? Як відключити ARC на основі файлу?


Відповіді:


2168

Можна відключити ARC для окремих файлів, додавши -fno-objc-arcпрапор компілятора для цих файлів.

Ви додаєте прапорці компілятора в Цілі -> Фази збірки -> Компілювати джерела. Вам потрібно двічі клацнути правою колонкою рядка під Прапорами компілятора . Ви також можете додати його до кількох файлів, утримуючи кнопку cmd для вибору файлів, а потім натискаючи клавішу Enter, щоб відкрити вікно редагування прапора. (Зауважте, що редагування декількох файлів замінить усі прапори, які вони вже можуть бути.)

Я створив зразок проекту, який має приклад: https://github.com/jaminguy/NoArc

xcode

Дивіться цю відповідь для отримання додаткової інформації: Вимкнути автоматичний підрахунок посилань для деяких файлів


58
Тож, місце додати цей прапор не надто інтуїтивно. Але в Xcode 4, у фазах збірки та джерелах компіляції, насправді є два стовпці. Один для імені файлу, а інший для прапорів компіляції для цього одного файлу. Тут ви вводите цей специфічний прапор компілятора.
casademora

3
Чи можете ви вказати для каталогу, тобто для всіх файлів у каталозі? А як щодо групи?
ma11hew28

4
Немає каталогів. В настройках збірки одночасно лише один файл :(
casademora

13
@casademora, ви не можете отримати достатньо коштів для цієї інформації. Дякую.
theTRON

26
@casademora ви можете вибрати декілька файлів одночасно - але потім не клацніть двічі, а натисніть RETURN. потім просто додайте -fno-objc-arcі він буде доданий до всіх вибраних файлів. правка щойно побачила відповідь нижче цієї :(
pkyeck

460

Вимкнути ARC для MULTIPLE файлів:

  1. Виберіть потрібні файли за допомогою Цільових / Фаз збірки / Компілюйте джерела в Xcode
  2. НАВІДКУВАТИСЯ
  3. Тип -fno-objc-дуга
  4. Натисніть Enter або Готово

;)

введіть тут опис зображення


2
Дякую! Довго шукали цю особливість. Подвійне клацання не працює, коли вибрано декілька рядків, але натискання клавіші "" робить. Так дивно.
bobmoff

4
Ух ти. Я витратив усю свою карму, щоб знову підтримати це. Дякую, що поділились!
Джеммонс

це здається, що більше не працює на Xcode 4.3.3. подвійне клацання або натисніть клавішу Enter на вибраних файлах не відображає діалогове вікно для введення прапора -fno-ojbc-arc, хтось має вирішити це?
tom

У мене був 4.3.3 і зараз 4.4 DP7, і він все ще працює чудово. Спробуйте перезапустити Xcode, перезапустити машину та відновити дозволи.
Тібідабо

44

Для Xcode 4.3 простішим способом може бути: Редагувати / Рефактор / Перетворити на ARC з метою-C, а потім перевірити файли, які не потрібно конвертувати. Я вважаю цей спосіб таким же, як використання прапора компілятора вище.


36

Дуже простий спосіб зробити окремий файл без дуги.

Виконайте нижче кроки:

Вимкнути ARC в окремому файлі:

  1. Виберіть потрібні файли за допомогою Цільових / Фаз збірки / Компілюйте джерела в Xcode

  2. Виберіть .m файл, який ви хочете, зробіть його NON-ARC PRESS ENTER Тип -fno-objc-arc

Файл ARC, що не належить до прапора проекту ARC: -fno-objc-arc

Файл ARC до прапора проекту ARC: -fobjc-arc


35

Примітка. Якщо ви хочете відключити ARC для багатьох файлів , вам потрібно:

  1. відкрити "Фази збірки" -> "Збір джерел"
  2. виберіть файли з "left_mouse" + "cmd" (для окремих файлів) або + "shift" (для згрупованих файлів - виберіть перший та останній)
  3. натисніть "ввести"
  4. пасти -fno-objc-arc
  5. знову натисніть «ввести»
  6. прибуток!


13
  1. Виберіть проект Xcode
  2. Переходьте до цілей
  3. Виберіть розділ Фази збірки
  4. Всередині розділу фаз збірки виберіть джерела компіляції.
  5. Виберіть файл, який ви не хочете відключити ARC, і додайте -fno-objc-arc

Вимкнути ARC для певного файлу


13

Можна відключити ARC (автоматичний підрахунок посилань) для конкретного файлу в Xcode.

Виберіть Ціль -> Фази збірки -> Компілювати джерела -> Вибрати файл (подвійне клацання) -> Додати "-fno-objc-arc" у спливаюче вікно.

Я зіткнувся з такою ситуацією при використанні файлів "Досяжність".

Це показано на малюнку нижче:

введіть тут опис зображення


11

використовувати -fno-objc-arc для кожного файлу у фазах збірки




6

Якщо ви використовуєте Unity, вам не потрібно змінювати це в Xcode, ви можете застосувати прапор компіляції у метаданих для конкретних файлів, безпосередньо в Unity. Просто виберіть їх на панелі "Проект" та подайте заявку на панель "Інспектор". Це важливо, якщо ви плануєте використовувати Cloud Build.введіть тут опис зображення


5

Додати прапор "-fno-objc-arc".

Прості дії: Додаток> Цілі> Фази збірки> Джерела компіляції> додайте прапор після класу "-fno-objc-arc"


5

Я думаю, що всі інші відповіді пояснюють, як відключити MRC (Manual Reference Count) та включити ARC (Automatic Count Count). Для використання MRC (Manual Manual Count), тобто відключення ARC (автоматичного відліку посилань) у МНОГО файлах:

  1. Виберіть потрібні файли за допомогою Цільових / Фаз збірки / Компілюйте джерела в Xcode
  2. НАВІДКУВАТИСЯ
  3. Тип -fobjc-дуга
  4. Натисніть Enter або Готово

2

Просто використовуйте прапор -fno-objc-arc у фазах збірки> Компілюйте джерела перед файлами, до яких ви не хочете застосувати ARC.


-1
  1. виберіть проект -> цілі -> фази збірки -> джерела компілятора
  2. виберіть файл -> прапорці компілятора
  3. додати -fno-objc-дуга

-2

Перейдіть у додаток -> потім цілі -> фази збірки -> джерело компіляції

Тепер виберіть файл, у якому ви хочете відключити ARC

вставити цей фрагмент "-fno-objc-arc" Після вставки натисніть клавішу ENTER

у кожному файлі, де потрібно вимкнути ARC.


5
Ваша відповідь не надає жодного доповнення до цього старого питання.
vikingosegundo

-2

Виконайте крок, щоб увімкнути відключення ARC

Виберіть проект Xcode Перейти до цілей Виберіть розділ Фази збірки Усередині розділу фаз збірки виберіть джерела компіляції. Виберіть файл, який ви не хочете відключити ARC, і додайте -fno-objc-arc


1
Ваша відповідь не надає жодного доповнення до цього старого питання.
Джомафер

Яке доповнення потрібно. якщо ви знаєте краще, ніж надайте нам.
щорічно

Я не відповідав тобі. Саме це запитання було задано 11 липня 1111 року о 5:21. Занадто багато відповідей з тією ж відповіддю, які не додають корисної інформації ... Я підозрюю, що хтось порушив вас з цієї причини ...
jomafer

чи можете ви мені на це розповісти.
щорічно
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.