Как начинающий программист для iPhone, как лучше всего писать приложения для iOS 5 или более старых версий? В частности, следует ли мне продолжать использовать выпуск / сохранение данных или игнорировать это? Это имеет значение?
Как начинающий программист для iPhone, как лучше всего писать приложения для iOS 5 или более старых версий? В частности, следует ли мне продолжать использовать выпуск / сохранение данных или игнорировать это? Это имеет значение?
Ответы:
Тебе решать. Вы можете писать приложения, используя ARC (автоматический подсчет ссылок), и Xcode напишет «связующий код», чтобы ваши приложения с поддержкой ARC могли работать на iOS 4, никаких изменений не требуется. Однако некоторые вещи не будут работать, и, что наиболее заметно, многие библиотеки, которые вы, возможно, захотите использовать, будут (иногда) вызывать бесчисленные ошибки, и вы не сможете их использовать, пока разработчики не выпустят обновление, совместимое с ARC.
Изменить : недавно я обнаружил, что вы можете отключить ARC для каждого файла. См pixelfreak ответ «s . Итак, мой совет остается в силе, но теперь сторонние библиотеки не нужно обновлять для работы с ARC.
Вот что Apple говорит об отказе от ARC для определенных файлов:
Когда вы переносите проект на использование ARC, флаг компилятора -fobjc-arc устанавливается по умолчанию для всех исходных файлов Objective-C. Вы можете отключить ARC для определенного класса, используя флаг компилятора -fno-objc-arc для этого класса. В Xcode на целевой вкладке Build Phases откройте группу Compile Sources, чтобы открыть список исходных файлов. Дважды щелкните файл, для которого вы хотите установить флаг, введите -fno-objc-arc во всплывающей панели, затем нажмите Готово.
См. Полное руководство по переходу здесь .
-fno-objc-arc
JSONKit
, к примеру. Попробуйте выполнить это через проверку ARC. Вы поймете, что я имею в виду. ;)
Для тех, кому все еще интересно, как отключить ARC для отдельных файлов, вот что я сделал:
Build Phases > Compile Sources
Я не знаю, рекомендуется ли это, но у меня он работает.
PS: Я собрал эту информацию из clang.llvm.org здесь , которая является общедоступной, таким образом , не под NDA.
iOS 5 все еще находится под соглашением о неразглашении и, вероятно, будет действовать до тех пор, пока не будет выпущена общедоступная версия. Если у вас есть учетная запись разработчика, перейдите на форумы разработчиков Apple и спросите там.
Для предыдущих версий вы должны подсчитывать ссылки и соответственно сохранять и выпускать. Ознакомьтесь с руководством по управлению памятью .
Изменить: вот публичная спецификация автоматического подсчета ссылок и цитата с публичной страницы iOS 5 :
Автоматический подсчет ссылок (ARC) для Objective-C делает управление памятью задачей компилятора. Включив ARC с новым компилятором Apple LLVM, вам больше никогда не придется вводить «сохранить» или «освободить», что значительно упростит процесс разработки и снизит количество сбоев и утечек памяти. Компилятор полностью понимает ваши объекты и освобождает каждый объект в тот момент, когда он больше не используется, поэтому приложения работают так же быстро, как и раньше, с предсказуемой и плавной производительностью.
Подробности не известны / на данный момент под NDA, но Apple реализовала автоматический подсчет ссылок (ARC) в iOS 5, как подробно описано здесь: http://developer.apple.com/technologies/ios5/
Если вы разрабатываете новое приложение в Xcode 4 с iOS 5 SDK, вы можете спокойно игнорировать подсчет сохранения / выпуска.
[править] sudo rm -rf хорошо замечает; сторонние библиотеки могут быть существенно затронуты
Никто не упомянул SystemConfiguration.framework ? Пожалуйста, не забудьте поместить его в Frameworks . Я с треском потратил несколько часов, чтобы осознать это.
Это, безусловно, выбор разработчика или команды. ARC (автоматический счетчик ссылок) немного упростил задачу, автоматически управляя памятью. Он будет освобождать, сохранять и освобождать при необходимости. Я действительно считаю, что вам следует приобрести опыт управления памятью самостоятельно, предпочтительно в тестовом приложении, если вы еще этого не сделали. Еще одна вещь, которую следует учитывать, - зависит ли ваше приложение от сторонних библиотек, которые, если не преобразованы в ARC, не позволят вашему приложению компилироваться. Выбор, очевидно, зависит от ситуации.
установить флаг как -fno-objc-arc в настройках проекта> Фазы сборки> Компилировать исходники