WWDC 2014. Новости среды

    В третий день WWDC были более технические и менее «интригующие» сессии (Integrating Swift with Objective-C, What's New in LLVM, Cross Platform Nearby Networking, Creating Custom iOS User Interfaces и т.д.), прошли мастер-классы по использованию компонентов и погружению в Swift.

    Отчет Артура mc_murphy Сахарова, Redmadrobot



    СЕССИЯ Integrating Swift with Objective-C
    • Swift очень классно интегрируется в текущие objC-проекты. Видно, что Apple этот вопрос очень серьезно прорабатывала — все для того, чтобы разработчики скорее переходили на Swift. Проект может быть одновременно написан на двух языках. Когда в objC-проект добавляется первый .swift-файл, Xcode создает так называемый Bridging Header — это то, что будет видно из кастомных objC-классов в Swift-коде. Очень похоже на precompiled header в objC-проекте. Все фреймворки видно и без него. Ну и из objC-кода видно весь Swift. Довольно просто и понятно, и всем легко управлять.
    • Когда в Swift вызываем собственный метод класса, не нужно писать self. То есть self.view превращается в просто view. Ну наконец-то. Весь синтаксис objC-классов транслируется в Swift на лету. Писали файл с классом MyClass на objC, переключились в другое окно со Swift-кодом, и подсказка по классу MyClass будет тут же выглядеть так, как будто он написан на Swift. Без перекомпиляции, все на лету.
    • Доходит до того, что трансляция на лету вытворяет такие вещи автоматически: InitWithData:(NSData*)data type:(NSString*)type ⟷ init(data: NSData, type: String), то есть автоматически убирается/подставляется With в init-конструкциях.
    • Напоследок общее правило — из objC-кода весь Swift-код выглядит как objC. Из Swift-кода весь objC-код выглядит как Swift. Документация, комментарии, синтаксис — все переводится автоматически.

    СЕССИЯ Building Adaptive Apps with UIKit
    • iOS 8 упрощает верстку для разросшегося семейства устройств (iphone 4/5, ipad, разные ориентации).
    • Все кейсы верстки на всех устройствах сведены к 4 разновидностям: по горизонтали и по вертикали может быть либо Compact, либо Normal верстка (этот параметр называется sizeClass). То есть для каждого вью можно раздельно предусмотреть вид в этих четырех случаях:
    compact width, normal height
    compact width, compact height
    normal width, compact height
    normal width, normal height
    И этого достаточно для всех устройств и всех ориентаций. И все это можно сделать в одном сториборде мышкой.
    • Навбары автоматически скрываются или уменьшаются, когда недостаточно места, в landscape статус-бар вообще скрывается.
    • В симуляторе появились resizable ipad и resizable iphone — то есть можно просто задать размер экрана в пикселях, и все сразу на лету будет переверстываться. Удобно для дебага. Apple явно что-то замышляет с разными размерами экрана под iOS...
    • В ассетах UIImage добавили под это дело специальные коллекции (TraitCollections), откуда картинка выбирается согласно текущему размеру элемента на экране. То есть забываем про @2x, теперь верстка динамическая, помимо ретина/неретина появились айпад/неайпад и горизонтально/вертикально. И на основе всего этого будет выбираться текстурка.
    • В IB добавили всякие штуки, которые позволяют создавать constraints раздельно для разных размеров/ориентаций. Таким образом, элементы теперь можно располагать вертикально в portrait и горизонтально в landscape ориентациях, не добавляя ни строчки кода. В целом интерфейс создания всего этого выглядит довольно понятно и удобно.
    • Все это отлично можно просматривать в IB на лету. Открыть сразу много девайсов и следить, как себя ведут constraints при изменении, без компиляции и запуска.

    СЕССИЯ Swift Playgrounds
    Playgrounds — это вообще прорыв в процессе разработки. Playgrounds в себя много всего собрали в удобной форме.
    Хотим мы проверить что-то, какую-то фичу. Вместо того, чтобы создавать пустой проект и что-то в нем писать, настраивать и запускать много раз — это как открыть блокнот и в интерактивном режиме все проверить.

    Что такое Swift Playground?
    1. Playground — это такой формат документа для Xcode. В него входят файлы кода и ресурсы.
    2. Каждый раз при изменении кода он автоматически запускается и тут же появляется результат.
    3. И код, и результат отображаются в одном окне бок о бок.

    Зачем нужны Playgrounds?
    1. Изучать новый язык
    2. Знакомиться с интерактивной документацией
    3. Обучать новичков разработке вообще
    4. Быстро прототипировать алгоритмы и тестировать их
    5. Писать код, который что-то рисует, без его запуска каждый раз
    6. Для визуализации любого кода, который что-то вычисляет
    7. Для экспериментов с API и игры с фреймворками

    Что умеют Playgrounds?
    1. В них можно в любой строке кода посмотреть объекты в QuickLook.
    2. В них рендерятся UITableView, и при изменении кода тут же видны изменения.
    3. Если что-то в них не рендерится, можно написать custom QuickLook для любого своего класса.
    4. Можно отлаживать асинхронные операции и смотреть данные из всех тредов сразу.
    5. Было демо того, как разработать алгоритм insertSort в плейграунде и проиллюстрировать для себя все шаги алгоритма. Впечатляюще.

    Что нельзя делать в Playgrounds?
    1. Они не поддерживают user interaction ни в каком виде, все можно менять только через код.
    2. Это исполняется только в симуляторе, не на устройстве.
    3. Нельзя импортировать свои фреймворки (однако можно скопипастить код из них).

    WWDC 2014. Первые впечатления очевидца
    WWDC 2014. Срез второго дня
    WWDC 2014. Отчет за четверг
    Метки:
    • +42
    • 15,7k
    • 5
    Redmadrobot 96,62
    №1 в разработке мобильных решений для бизнеса
    Поделиться публикацией
    Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
    Похожие публикации
    Комментарии 5
    • +2
      А про iOS 8 и Yosemite будут посты?
      • 0
        Вас интересует просто overview или больше конкретика?

        Overview хорошо изложен в сессиях Platforms State of the Union и What's New in Cocoa Touch.
        Конкретика тут на всех сессиях, много технической информации, которую я не буду всю переводить и выписывать (конспекты довольно объемные и тезисные получаются). Цель таких заметок — рассказать про какие-то любопытные тонкости, которые позволят выбрать нужные сессии и внимательно посмотреть видео с них.
        • 0
          Та не, просто интересно чего ждать. Был уже пост на эту тему, но как-то всё поверхностно.
        • 0
          Возможно, после WWDC будет время собрать со всех сессий по платформам и написать полную сводку по iOS8 и Yosemite. Сейчас на такое времени нет, да и постоянно рассказывают про новое.
        • +4
          Может пригодиться кому, как просмотреть все ссылки на видео сессий WWDC:
          curl https://developer.apple.com/videos/wwdc/2014/ | grep -iIoh 'http.*._hd_.*dl=1">HD' | sed -e 's/\?dl=1">HD//g'

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

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