IOS 5 Best Practice (выпуск/сохранение?)

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

Ответ 1

Это вам. Вы можете писать приложения с помощью ARC (Automatic Reference Counting), а 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

См. полный путеводитель перехода здесь.

Ответ 2

Для кого-то еще любопытно, как отключить ARC для отдельных файлов, вот что я сделал:

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

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

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

Ответ 3

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

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

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

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

Ответ 4

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

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

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

Ответ 5

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

Ответ 6

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

Ответ 7

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