Pull to refresh

Обзор нововведений в Xcode 4.2 для iOS-разработчика

Reading time 4 min
Views 4.4K
Одновременно с релизом iOS5 разработчики получили в свое распоряжение обновленный Xcode 4.2, в котором ожидаемо обнаружились некоторые новые «фичи». Под катом кратко рассмотрим основные нововведения, представленные в XCode 4.2.

Автоматический подсчет ссылок (Automatic Reference Counting, ARC)

Теперь при создании большей части новых приложений из готовых шаблонов можно будет выбрать, хотите ли Вы использовать ARC или нет. Для тех, кто не хочет, все остается по-старому, для выбравших использование ARC жизнь становится несколько легче в плане написания кода (и сложнее в плане поиска багов в старом коде при включении ARC).

Если кратко, то ARC автоматизирует управление памятью для объектов Objective-C, и теперь писать retain, new, release, autorelease не придется. Более того, для проектов, в которых эта функция включена, наличие в коде указанных ключевых слов (равно как и неуказанных, но использовавшихся ранее для управления памятью) будет вызывать ошибки компиляции.

Для того, чтобы автоматически перевести свой проект на ARC необходимо в Xcode > Preferences > General включить опцию Continue building after errors, после чего выбрать Edit > Refactor > Convert to Objective-C ARC. При этом target проекта автоматически изменит используемый для построения проекта компилятор на LLVM (о нем чуть ниже).

Отмечу, что на Хабре уже есть достаточно подробная заметка об использовании Automatic Reference Counting, поэтому всех заинтересовавшихся подробностями нововведения смело отправляю туда.

Также на эту тему может быть полезен документ Transitioning to ARC Release Notes.
Кроме того, есть замечательное видео с WWDC 2011 на эту же тему.

Компилятор по умолчанию

Уже упомянутый выше LLVM 3.0 стал компилятором, используемым по умолчанию в Xcode 4.2. Apple утверждает, что по сравнению с GCC в Xcode 4.0 и LLVM-GCC в Xcode 4.1, LLVM генерирует и оптимизирует код быстрее, лучше, сильнее.
Кроме того, как уже было упомянуто выше, LLVM поддерживает использование ARC в Objective-C.

Storyboarding

Сей термин осторожно переведем как Раскадровка, что, собственно, и отражает суть нововведения. Теперь для вновь создаваемых приложений можно отдельно нарисовать каждый экран (в некоторых книгах – представление, view), задать переходы между экранами, а также элементы управления, вызывающие переходы меджу экранами. Для этого достаточно при создании нового проекта установить галочку у пункта Use Storyboard.

При создании проекта Вам будет предоставлен контроллер представления (view controller), представляющий собой как-бы первую «сцену» (под термином сцена Apple понимает отдельный конкретный экран приложения iPhone), т.е. первоначальный, стартовый экран приложения. Для добавления новых представлений в свой приложение достаточно выбрать подраздел Controllers & Objects из Object library, выбрать нужный контроллер и перетащить его в рабочую область.

Должен отметить, что в обновлении 4.2 появились такие новые контроллеры представлений, как Page View Controller, представляющий собой последовательность контроллеров представлений в виде перелистываемых страниц блокнота, а также GLKit View Controller, управляющий представлением GLKit.

На iPhone каждый контроллер представления отвечает за отображение одного конкретного экрана приложения (сцены), на iPad на экране могут быть представлены одновременно более одной такой «сцены».

Для того, чтобы задать переходы от элементов интерфейса к другим котроллерам представлений, необходимо связать эти самые элементы управления с заголовками контроллеров представлений перетаскиванием с зажатым Control. При этом между контроллерами представлений будут появляться стрелочки, представляющие переход от одной сцены к другой. Можно задать вид анимации перехода между сценами.

Поскольку данное нововведение достаточно интересно, предположительно напишу отдельную заметку, более подробно раскрывающую суть этого нововведения.

Эмуляция географического местоположения

Оставив в стороне споры о правильности перевода Simulation в эмуляцию или симуляцию (например, оргазмов), отметим, что в Xcode 4.2 появилась возможность эмулировать в симуляторе географическое положение эмулируемого устройства, отличное от реального географического положения разработчика. В Xcode 4.0 и 4.1 такой возможности не наблюдалось.

Для того, чтобы задать местоположение, необходимо в меню выбора вариантов эмулируемого устройства Edit Scheme… открыть вкладку Run MyLocationSimulationApp (имя приложения у Вас, скорее всего, будет другим), перейти на вкладку Options и установить галочку для пункта Core Location – Allow Location Simulation. После этого из выпадающего меню можно выбрать эмулируемое местонахождение (поддерживается в том числе Moscow, Russia).

Управление данными приложения (Application Data Management)

В Xcode 4.2 теперь можно сохранять и восстанавливать файлы данных приложения в симуляторе или на реальном устройстве во время отладки или работы unit-тестов. Этой способностью пока воспользоваться не довелось, поэтому подробнее ничего сказать, к сожалению, не могу.

Выборочная загрузка дистрибутива Xcode

Разработчики, обновляющиеся до версии 4.2 (и я в том числе), скорее всего, не ощутят на себе это нововведение, а вот те, кто будут ставить Xcode 4.2 «с нуля», думаю, оценят то, что установщик Xcode по умолчанию не загружает некоторые большие компоненты, например, старые версии симуляторов устройств. При этом недостающие компоненты всегда можно загрузить отдельно.

Улучшенная отладка приложений OpenGL ES

Не считаю себя специалистом по приложениям OpenGL ES, поэтому комментировать это нововведение не буду. Насколько я понял, теперь можно более удобно изучать состояния приложения с OpenGL ES в каждый конкретный момент времени, включая состояние текстур и шейдеров. Надеюсь, что более грамотные товарищи поправят меня в этом (а может быть и не только в этом) вопросе.

Подробнее о других нововведениях в Xcode 4.2, а также в iOS 5, можно почитать, например, вот в этом описании новшеств iOS 5.0.
Tags:
Hubs:
+29
Comments 8
Comments Comments 8

Articles