Pull to refresh
70.3
red_mad_robot
№1 в разработке цифровых решений для бизнеса

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

Reading time4 min
Views16K
В третий день 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. Отчет за четверг
Tags:
Hubs:
+42
Comments5

Articles

Information

Website
redmadrobot.ru
Registered
Founded
Employees
1,001–5,000 employees
Location
Россия