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. Щоразу при зміні коду він автоматично запускається і тут же з'являється результат.
  4.  
  5. І код, і результат відображаються в одному вікні пліч-о-пліч.
  6.  
 
Навіщо потрібні Playgrounds?
 
     
  1. Вивчати нову мову
  2.  
  3. Знайомитися з інтерактивною документацією
  4.  
  5. Навчати новачків розробці взагалі
  6.  
  7. Швидко прототіпіровать алгоритми і тестувати їх
  8.  
  9. Писати код, який щось малює, без його запуску кожен раз
  10.  
  11. Для візуалізації будь-якого коду, який щось обчислює
  12.  
  13. Для експериментів з API та ігри з фреймворками
  14.  
 
Що вміють Playgrounds?
 
     
  1. У них можна в будь-якому рядку коду подивитися об'єкти в QuickLook.
  2.  
  3. У них Рендер UITableView, і при зміні коду тут же видно зміни.
  4.  
  5. Якщо щось у них не рендерится, можна написати custom QuickLook для будь-якого свого класу.
  6.  
  7. Можна налагоджувати асинхронні операції і дивитися дані з усіх тредов відразу.
  8.  
  9. Було демо того, як розробити алгоритм insertSort в плейграунде і проілюструвати для себе всі кроки алгоритму. Вражаюче.
  10.  
 
Що не можна робити в Playgrounds?
 
     
  1. Вони не підтримують user interaction ні в якому вигляді, все можна міняти тільки через код.
  2.  
  3. Це виконується тільки в симуляторі, що не на пристрої.
  4.  
  5. Не можна імпортувати свої фреймворки (однак можна скопіпастіть код з них).
  6.  
 WWDC 2014. Перші враження очевидця
 WWDC 2014. Зріз другого дня
    
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.