iOS 5 Best Practice (Выпустить / сохранить?) - PullRequest
109 голосов
/ 10 июня 2011

Как начинающий программист iPhone, каков наилучший метод написания приложений для iOS 5 или более старых версий? В частности, я должен продолжать использовать выпуск / сохранение данных, или я должен игнорировать это? Имеет ли это значение?

Ответы [ 7 ]

171 голосов
/ 21 июня 2011

Для всех, кому еще интересно узнать, как отключить ARC для отдельных файлов, вот что я сделал:

  1. Зайдите в настройки вашего проекта, под Build Phases > Compile Sources
  2. Выберите файлы, которые вы хотите отключить ARC, и добавьте -fno-objc-arc флаги компилятора. Вы можете установить флаги для нескольких файлов за один снимок, выбрав файлы и нажав клавишу «Ввод».

Я не знаю, является ли это рекомендуемым способом, но он работает для меня.

PS: я собрал эту информацию с clang.llvm.org здесь , который является общедоступным, то есть не под NDA.

99 голосов
/ 10 июня 2011

Это зависит от вас.Вы можете писать приложения, используя ARC (автоматический подсчет ссылок), и Xcode напишет «клейкий код», чтобы позволить вашим приложениям с поддержкой ARC работать на iOS 4, никаких изменений не требуется.Однако некоторые вещи не будут работать, и наиболее заметно, что многие библиотеки, которые вы, возможно, захотите использовать, будут (иногда) вызывать бесчисленные ошибки, и вы не сможете их использовать, пока разработчики не выпустят обновление, совместимое с ARC.*

Редактировать : Я недавно обнаружил, что вы можете отключить ARC для каждого файла.См. pixelfreak ответ .Итак, мой совет остается в силе, но теперь сторонние библиотеки не нужно обновлять для работы с ARC.

Вот что Apple говорит об отказе от ARC для определенных файлов:

Когда вы переносите проект на использование ARC, флаг компилятора -fobjc-arc устанавливается по умолчанию для всех исходных файлов Objective-C.Вы можете отключить ARC для определенного класса, используя флаг компилятора -fno-objc-arc для этого класса.В XCode на целевой вкладке Фазы сборки откройте группу Источники компиляции, чтобы раскрыть список исходных файлов.Дважды щелкните файл, для которого вы хотите установить флаг, введите -fno-objc-arc на всплывающей панели, затем нажмите «Готово».

enter image description here

См. Полное руководство по переходу здесь .

10 голосов
/ 10 июня 2011

iOS 5 все еще под NDA, и, вероятно, будет, пока они не выпустят публичную версию. Если у вас есть учетная запись разработчика, зайдите на Форумы разработчиков Apple и спросите там.

Для предыдущих версий вы должны считать ссылки и соответственно сохранять и выпускать. Ознакомьтесь с Руководством по управлению памятью .

Редактировать: Вот публичная спецификация для автоматического подсчета ссылок и цитата из публичной страницы iOS 5 :

Автоматический подсчет ссылок (ARC) для Objective-C делает управление памятью работой компилятора. Включив ARC с помощью нового компилятора Apple LLVM, вам больше не нужно вводить retain или release снова, что значительно упрощает процесс разработки, уменьшая сбои и утечки памяти. Компилятор полностью разбирается в ваших объектах и ​​выпускает каждый объект в тот момент, когда он больше не используется, поэтому приложения работают так же быстро, как и всегда, с предсказуемой, плавной производительностью.

4 голосов
/ 10 июня 2011

В настоящее время подробности незначительны / ниже NDA, но Apple внедрила автоматический подсчет ссылок (ARC) в iOS 5, как описано здесь: http://developer.apple.com/technologies/ios5/

Если вы разрабатываете новое приложение в Xcode 4 с помощью iOS 5 SDK, вы можете спокойно игнорировать счет сохранения / выпуска.

[edit] sudo rm -rf делает хорошую мысль; могут значительно пострадать третьи лица

3 голосов
/ 29 ноября 2012

Это, безусловно, выбор разработчика или команды. ARC (автоматический счетчик ссылок) упростил задачу благодаря автоматическому управлению памятью.Он освободит, сохранит и при необходимости освободит.Я действительно считаю, что вы должны получить опыт управления памятью самостоятельно, предпочтительно в тестовом приложении, если вы еще этого не сделали.Еще одна вещь, которую стоит рассмотреть, - зависит ли ваше приложение от сторонних библиотек, которые, если не преобразовать их в ARC, будут препятствовать компиляции вашего приложения.Выбор, очевидно, зависит от ситуации.

3 голосов
/ 10 января 2012

Никто не упомянул SystemConfiguration.framework ?Пожалуйста, не забудьте поместить его в Рамки .Я потратил несколько часов, чтобы понять это.

0 голосов
/ 20 мая 2014

установить флаг как -fno-objc-arc в настройках проекта> Фазы сборки> Источники компиляции

...