iOS дайджест #42: Mobile Native Foundation

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті.

У випуску: Swift 5.4, Apple Silicon with Xcode, SwiftUI on macOS.

Актуальне

У цьому розділі розглянемо, що нового в мові Swift та в екосистемі Apple загалом.

Announcing the Mobile Native Foundation
На початку березня група відомих компаній, таких як Airbnb, LinkedIn, Capital One, Microsoft, Slack та інші, створила Mobile Native Foundation, обґрунтовуючи це тим, що в мобільній індустрії мало стандартів. Цікаво, що буде далі, спостерігаємо.

What’s new in Swift 5.4?
Розглянемо, що нового у Swift 5.4. Я дуже чекаю, що можна буде писати .backgroundColor(.black.opacity(0.1)), а також перевантажувати локальні функції.

SwiftUI Cheat Sheet
Шпаргалка зі SwiftUI, яка стане вам у пригоді. Корисна як для новачків, так і для профі. Кожен зможе взяти для себе щось корисне.

Which SwiftUI property wrapper to choose in any situation
Якщо ви сумніваєтеся, який property wrapper використовувати в тій чи іншій ситуації, то в мене є рішення для вас. За посиланням вище ви знайдете квіз, в кінці якого отримаєте відповідь на ваше питання. Дуже корисно та інформативно.

On Using Apple Silicon Mac Mini for Continuous Integration
Автор статті розповідає про те, з якими проблемами стикнувся, використовуючи ноутбук з процесором M1 як Continuous Integration. Наприклад, не всі інструменти підтримуються, немає можливості встановити старі симулятори та інші.

One week with Xcode on a Mac M1
Ознайомимося з досвідом використання Xcode на комп’ютері з новим чипом M1. Автор розповідає про переваги та недоліки. Спойлер: не поспішайте оновлювати свій ноутбук, все працює далеко не ідеально. Всьому свій час.

Swift and Kotlin: The Subtle Differences
Цікавий порівняльний аналіз сучасних мов програмування Swift та Kotlin. Як ви вважаєте, за якою мовою майбутнє?

Different Approaches in Consuming KMM Modules in iOS
Якщо вам необхідно працювати з Kotlin Multiplatform модулями у вашому iOS-застосунку, то ця стаття саме для вас. Автор статті докладно описує різні техніки, як це зробити.

Що нового з’явилося?

Цей розділ присвячений новим фреймворкам і застосуванню їх на практиці.

Xcode 12.5 Playground Access To App Types
Нарешті в Xcode 12.5 плейграунди отримують доступ до всіх типів в проєкті. Це надзвичайно круто, адже можна буде дебажити окремо кожну функціональність з різними вхідними параметрами, не запускаючи додаток.

Робимо свій віджет в iOS 14
Так, знову на зв’язку стаття про те, як створити свій власний віджет та інтегрувати його в існуючий проєкт. Також автор детально розглядає основні принципи роботи WidgetKit.

AppKit is Done
В цій статті розповідається як створити macOS додаток, побудований на SwiftUI. Також він розповість, з якими проблемами зіштовхнувся.

SwiftUI Data Flow
Автор статті детально розповідає про потік даних в SwiftUI та найращі техніки їх використання.

Hero animations in SwiftUI
Розглянемо, що таке Hero animations та як їх реалізувати в SwiftUI з використанням модифікатора matchedGeometryEffect.

Triple Trouble
Якщо ваш застосунок побудований на трьох стовпцях, то ця стаття саме для вас. Чудова документація для такого випадку, автор докладно все пояснює.

Styling custom SwiftUI views using environment
Надзвичайно корисна стаття про те, як зручно стилізувати View в SwiftUI за допомогою атрибута @Environment.

The lifecycle and semantics of a SwiftUI view
Автор розглядає життєвий цикл SwiftUI View. Спойлер: не намагайтеся використовувати підхід з AppKit та UIKit у SwiftUI ;)

Getting started with UIKit in SwiftUI and vice versa
Розглянемо, як UIKit та SwiftUI можуть співіснувати в одному проєкті. Автор детально ознайомить нас з інтероперабельністю UIKit та SwiftUI.

Migrating MVVM architecture from RxSwift to Combine
SwiftUI набирає все більше та більше обертів. Проте, що робити, якщо ваш проєкт побудований на RxSwift? Розглянемо покроково, як перейти з RxSwift на Combine.

SF Symbols: The benefits and how to use them guide
Якщо ви тільки чули про SF Symbols, проте ніяк не могли виділити час, щоб добре ознайомитися з ними, то ця стаття саме для вас. Автор розглядає, як почати використовувати їх у власному проєкті, а також які переваги вони мають.

How to change the color of SF Symbols
Що робити, якщо вам необхідно знайти кольорове зображення для компонента, проте досвіду з редакторами ви не маєте, а в інтернеті нічого не знайшли. Не проблема, завдяки використанню SF Symbols зробити це простіше простого.

Розпізнавання блоків тексту за допомогою фреймворку Vision
Автор розповідає про те, як розпізнавати блоки тексту з використанням фреймворку Vision, а також ділиться лайфхаками зі свого досвіду.

Swipeless Tinder Using iOS 14 Vision Hand Pose Estimation
У цій статті автор розповідає, як створити аналог застосунку Tinder, в якому керування картками відбувається за допомогою жестів з використанням фреймворку Vision.

Introduction to structured concurrency in Swift: continuations, tasks, and cancellation
Розглянемо, що таке structured concurrency, а також на практиці з’ясуємо, що нам пропонують сьогодні. Цікаво, яка її доля в майбутньому та чи зможе вона вплинути на нативне API?

Відкриваємо нові горизонти

У цьому розділі розглянемо різні цікаві теми, які стануть тобі в пригоді.

Стейт-машини
Якщо вам, як і мені, дуже цікаво розібратись, як працюють стейт-машини, то існує чудовий гайд. Рекомендую, надзвичайно пізнавально та інформативно.

DI в iOS: Complete guide
Автор розповідає про те, що таке Dependency Injection, навіщо воно потрібне, а також порівнює найвідоміші бібліотеки.

Demystifying Core Data: A guide for newcomers
Що робити, якщо ви стикнулися з Core Data? Не хвилюйтеся, ось чудова стаття для новачків.

The «ExpressibleBy-» Protocols in Swift
Якщо вам необхідно створити екземпляри класу із Bool чи String типів, то сімейство протоколів ExpressibleBy- стане вам у пригоді. Використовуймо їх з розумом ;)

Xcode Mark Line to improve readability using // Mark: comments
Автор розповідає про маркування в Xcode на прикладі MARK, FIXME, TODO, а також у чому полягає різниця між ними.

Different ways to sort an array of strings in Swift
У статті розповідають, як відсортувати масив із String. Окрім sort та sorted, можна використовувати compare з різними опціями.

Dealing with camelCase, snake_case, PascalCase, kebab-case and other custom JSON property names in Swift
Розглянемо, як розширити функціональність JSONDecoder та створити власну стратегію декодінгу, якщо snake case та camel case вам замало.

How to Create a Swift Package From a C++ Library
Якщо вам необхідно створити Swift Package з C++ бібліотеки, то ця стаття саме для вас. Автор на власному прикладі покроково розповідає, як це зробити.

Performing POST and file upload requests using URLSession
Автор розповідає, як реалізувати оновлення прогресу при завантаженні файлів з використанням URLSession та Combine.

Instruments Tutorial with Swift: Getting Started
Надзвичайно корисна стаття про те, як користуватися Xcode Instruments для пошуку проблем у застосунку на прикладі Allocations та Time Profiler.

App Launch Time: 7 tips to increase performance
Розглянемо, як оптимізувати швидкість запуску iOS застосунку: це й відкладення логіки до закінчення рендеру першого фрейму, і використання статичних бібліотек.

How to solve problems with bitwise operators in Swift
Автор розповідає про використання бітових операцій у Swift, а також на власному прикладі показує, коли їх доцільно застосовувати.

Getting Started with the App Store Connect API
Чи доводилося вам автоматизувати роботу з App Store Connect? Якщо ні, то автор розповість про App Store Connect API та як з ним взаємодіяти.

How to reduce and optimise the iOS App Size?
Важливо стежити за розміром вашого застосунку. Спойлер: у блоці «Для натхнення» ви зрозумієте чому. Проте як його оптимізувати та зменшити кінцевий розмір? Відповідь на це питання ви знайдете в статті.

How to Swizzle All of UIKit
Розглянемо, що таке swizzling та де й коли необхідно його використовувати. Спойлер: не намагайтеся зловживати цим прийомом, це не найкраще рішення у житті :) Використовуйте з потреби.

The Swift compiler for beginners
Автор статті розповідає для новачків про те, як влаштована компіляція в мові Swift. На власному прикладі ми зможемо зібрати невеликий проєкт без використання Xcode.

Building static and dynamic Swift libraries using the Swift compiler
Якщо вам важко відповісти на запитання, чим відрізняється статична бібліотека від динамічного фреймворку, то це не проблема. У статті ознайомимося зі всіма аспектами.

Code Generating Swift Mocks with Sourcery
Розглянемо, як спростити та стандартизувати роботу з моками для модульних тестів з використанням Sourcery.

Вдосконалюємо свої знання

У цьому розділі ми розглянемо докладніше цікаві теми з різних напрямів.

How to use @autoclosure in Swift to improve performance
Розглянемо, що таке @autoclosure, а також коли його доцільно використовувати.

Getting started with associated types in Swift Protocols
Автор розповідає про використання associated types у протоколах на прикладі одночасної підтримки кольорів для SwiftUI та UIKit. Також ознайомить нас з обмеженнями, які існують у таких протоколах.

How to use Variadic parameters in Swift
Що таке variadic parameters та навіщо вони потрібні? У цій статті ви знайдете відповіді на всі питання.

Understanding @inlinable in Swift
Якщо ви, як і я, не відразу зможете відповісти, в чому різниця між inline та inlinible, то ця стаття саме для вас. Спойлер: використовуємо атрибут @inlinible, якщо у вас декілька модулів залежать один від одного.

How and when to use Lazy Collections in Swift
У цій статті автор розповідає про те, що таке Lazy Collections, а також в яких випадках їх доцільно використовувати, а в яких ні.

Сек’юрність iOS-додатків: гайд для новачків
Розглянемо, як поліпшити сек’юрність свого застосунку.

Debugging how you think about code signing
Якщо ви, як і я, «обожнюєте» роботу, пов’язану з Code Signing, то рекомендую ознайомитися з цією статтею. Після її прочитання моє бачення стало набагато чіткішим.

Be careful with Obj-C bridging in Swift
Автор розповідає про те, які підводні камені приховує оператор as у Swift, якщо ми працюємо з Obj-C типами.

Memory Management: ARC vs MRC в iOS
Якщо ви потрапили на проєкт, на якому все ще використовується Manual Reference Counter, то не хвилюйтеся, ця стаття швидко введе вас у курс подій.

Memory layout in Swift
Розглянемо, як зберігаються в пам’яті value та reference типи в мові Swift.

Does Swift enum retain its associated value
Цікавий експеримент, котрий перевіряє, чи тримає enum посилання на associated value. Спойлер: так, тримає strong reference, тому будьте уважні та обережні.

Result in Swift: Getting started with Code Examples
Найімовірніше, кожен з нас стикався з типом Result у Swift. Проте, чи знали ви, що, окрім того, що його можна повертати із closure, для нього актуальні функції map, flatMap, mapError.

What is intrinsic content size and why care?
Автор статті розповідає, що таке intrinsic content size, навіщо він потрібен, і пропонує практичні приклади застосування.

Effective Auto Layout Programmatically in Swift
Обговорення щодо створення UI програмно чи в Interface Builder не закінчаться ніколи. Проте ми повинні бути ефективними в кожному підході. Розглянемо ефективні поради, як покращити свої скіли в створенні UI програмно.

Unit testing Combine-based Swift code
Як написати unit-тести в проєкті, в основі якого лежить фреймворк Combine? Автор на власному прикладі розповідає, як це зробити.

Цікаві та нетривіальні рішення

У цьому розділі розглянемо різні цікаві та нетривіальні рішення, які використали інженери у своїх проєктах.

Recreating iMessage Confetti
Що робити, якщо необхідно відтворити анімацію появи конфеті з iMessage? Легко, у статті покроково описано, як створити таку wow-анімацію з використанням CAEmitterLayer.

Implement native UI from scratch using JSON
Тут розповідається про процес створення UI з готових компонентів. Дизайнери самі складають конфігурацію у форматі JSON і в такому вигляді передають інженерам.

Creating iOS Application Icons with SwiftUI
Автор розповідає, як на власному досвіді створював іконки для застосунку з використанням технології SwiftUI.

Compositional Layout for UICollectionViews
Якщо вам цікава тема Compositional Layout, то ця серія статей саме для вас. Автор показує, як створити нетривіальні інтерфейси шляхом Compositional Layout.

XCFrameworks dependencies
Важливо пам’ятати, що під час створення XCFramework він не може залежати від Swift Packages. Проте що робити, якщо потрібно мати цю залежність? Відповідь ви знайдете у статті.

Для натхнення

Залишу тут посилання на ресурси, які можуть нас надихнути. Також у цьому розділі знайдете різні лайфхаки та інтерактивні відео.

24 Quick Xcode Tips
Якщо ви бажаєте стати гуру Xcode, то ця стаття просто знахідка. Автор на власному прикладі розповідає про лайфхаки, які допоможуть писати код швидше та ефективніше.

Re-enabling the iOS Simulator Slow Animations Shortcut
Якщо дуже хочеться повернути шорткат для уповільнення анімацій в симуляторі, то ось як можна це зробити за допомогою системних налаштувань.

Books I read in 2020
Автор ділиться матеріалами, які він прочитав у 2020 році. А скільки книжок за рік читаєте ви?

Apple 2020 Year In Review
Якщо ви стежите за новинами від Apple, як за останніми днями місяця, коли має прийти зарплата, то ця стаття саме для вас! Найцікавіші події з життя компанії за 2020 рік.

Історія одного pet-проєкту
Автор на власному прикладі розповідає історію створення iOS-застосунку — від ідеї до результату. А також з якими проблемами стикнувся та як їх вирішив.

Ніякого rocket science, або Декілька порад для старту нового проєкту
Якщо стартуєте проєкт з нуля, то в цій статті ви знайдете декілька порад, які стануть вам у пригоді.

Distributing Mac apps outside the App Store, a quick start guide
Корисна стаття для тих, хто вирішив поширювати свій macOS застосунок поза Mac App Store. Автор детально розповідає про всі нюанси, а також висвітлює переваги та недоліки такого процесу.

The Average Size of the U.S. App Store’s Top Games Has Grown 76% in Five Years
У цій статті автор розповідає про те, як середній розмір мобільних ігор в App Store зріс на 76% за останні 5 років, а також чому необхідно стежити за кінцевим розміром бандлу.

Thoughts on Apple Glasses
Цікаві роздуми на тему Apple Glasses. Чи справді їм вдасться повторити успіх iPhone, чи закінчиться все на етапі розмов?

Попередні випуски

👍НравитсяПонравилось5
В избранноеВ избранном2
LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Подписаться на комментарии