насколько безопасно смешивать код ARC и не-ARC в одном проекте iOS?

Я изменяю приложение с открытым исходным кодом , которое не является ARC. Большая часть моего опыта работы с iOS связана с объектами-с поддержкой ARC, поэтому, когда я создаю и добавляю новые файлы в проект, я стараюсь сделать их совместимыми с ARC, используя флаги компилятора (особенно, когда я столкнулся со странным не дуговым кодом ошибки ).

Вещь, которая держит меня ночью, - это вопрос: насколько безопасно и надежно смешивать дуги и недуговый код в моем проекте? Когда придет время QA, будет ли это кошмар для тестирования таких вещей, как утечки памяти и производительность и т. Д. И т. Д.? Спрашивается по-другому .. стоит ли конвертировать существующий недуговой код в код дуги и избавиться от потенциальных проблем?

7
nl ja de
мой плохой .. исправлено ..
добавлено автор abbood, источник
Это флагов компилятора, а не флагов компоновщика. Кроме того, использование ARC не освобождает вас от необходимости тестировать ваше приложение для утечек и производительности.
добавлено автор Kurt Revis, источник

2 ответы

Вы можете свободно перемешать без каких-либо проблем.

9
добавлено
err ... ну, я очень уважаю вас обоих, и я признаю оба ваших технических опыта. Я надеялся на некоторые доказательства или документацию? или ваши ответы просто основаны на личном опыте (которого все еще может быть достаточно самого)
добавлено автор abbood, источник
достаточно хорошо.
добавлено автор abbood, источник
Можете ли вы объяснить цель/необходимость для флага компиляции -fno-objc-arc ? Я использую pre-arc библиотеку, которая говорит, чтобы добавить этот флаг для каждого из своих исходных файлов.
добавлено автор devios1, источник
Вы имели в виду, что это безопасно, если вы используете правильные флаги? Потому что он, конечно, не компилируется без них.
добавлено автор devios1, источник
Флаг -fno-objc-arc необходим для компиляции кода, который не использует ARC. Когда ARC включен, сохранение/освобождение/автореферат являются незаконными. Если вы компилируете код, который не написан для ARC и содержит эти вызовы, вы должны отключить ARC для этого файла. Не забудьте использовать статический анализатор, чтобы найти какие-либо проблемы. Статический анализатор в основном узнает, какие бы вызовы ARC не выполняли, какие коды кода и сравнивают.
добавлено автор gnasher729, источник
@abbood - ARC не волшебный, он просто просматривает ваш код во время компиляции и добавляет необходимые удержания и релизы. Сгенерированный код не отличается от кода, который вы написали бы сами. Из Переход к заметкам о выпуске ARC :« Вы также можете использовать ARC для каждого файла, если вам удобнее использовать ручной подсчет ссылок для некоторых файлов ».
добавлено автор sosborn, источник
Это безопасно, но вы должны использовать флаги для его компиляции.
добавлено автор sosborn, источник
Да, действительно, это все, что вам нужно. Существует одно предостережение (что-то о прекомпилированном коде с безнадежными соглашениями об именах, обманывающих ARC), но я не думаю, что это применимо в этой ситуации.
добавлено автор borrrden, источник

Я не думаю, что это безопасно, поскольку некоторый код запрещен, когда включен ARC, такой как этот метод:

- (void)dealloc
{
    [super dealloc];
}

И, конечно, при выпуске:

[exampleVariable release];

Что может присутствовать в проектах, не связанных с ARC.

0
добавлено
мой вопрос предполагает, что все такие небезопасные коды уже учтены (т.е. вывезены)
добавлено автор abbood, источник
Не будет ли учитываться код, отличный от ARC, по сути сделать код ARC?
добавлено автор devios1, источник
В этом случае это абсолютно безопасно, так как это единственное, что имеет значение.
добавлено автор user2047438, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

iOS Developers — русскоговорящее сообщество
iOS Developers — русскоговорящее сообщество
2 400 участник(ов)

Общаемся на темы, посвященным iOS-разработке, Swift, Objective-C, SDK, Rx, Cocoa и т.д.