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

    Одновременно с релизом 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.

    Похожие публикации

    Средняя зарплата в IT

    120 000 ₽/мес.
    Средняя зарплата по всем IT-специализациям на основании 9 370 анкет, за 1-ое пол. 2021 года Узнать свою зарплату
    Реклама
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее

    Комментарии 8

      +6
      Жалко что StoryBoard доступен только для iOS 5
        +1
        > Выборочная загрузка дистрибутива Xcode
        А Вы случаем не знаете, как можно эти компоненты один раз скачать и потом установить на N машин?
          0
          К сожалению, не знаю. В моей компании разработчиков под iOS настолько мало, что перед нами не возникала такая задача. ;(
            0
            А простая подмена файлов (Xcode выкачивает те же документы в /Library/Developer/Documentation/DocSets/) не помогает?
              0
              Может и помогает, но не нашли, где XCode эти файлы хранит. Спросил из любопытства скорее, сейчас уже все скачали.
            0
            Попробовал нымвыходных пописать приложение с ARC и Storyboard — очень круто. Кода становится гораздо меньше. За два дня и приложение с 10 экранами только один раз написал pushViewController. Да и то, только потому что они не доделали отдельный segue для нажатия на detail accessory в ячейке и пришлось это обрабатывать вручную.
              +2
              Еще можно упомянуть про новые фичи симултора. Одна из них Blended layers. Она позволяет окрасить слои представления в разные цвета, с помощью чего можно увидеть реальный размер элементов UI.
                0
                Еще добавлена возможность «печатать». Причем с выбором типа принтера (цветной, чб лазерный и т.д.)
                Только вчера обнаружил.

              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

              Самое читаемое