Источник картинки: The Verge
Самоуправляемый автомобиль от Apple, поддержка манипулятора типа «мышь» на айпаде, камера на Apple Watch и еще больше новостей в новом выпуске iOS-дайджеста. Заодно посмотрим, насколько хорош в плане перформанса SwiftUI и как использовать фреймворк Combine, если цепочки RxSwift больше не цепляют за душу.

Новости индустрии


  • Издание The Verge сообщает, что Apple рассматривает возможность встроить камеру в свои часы. Мы можем только догадываться, насколько эти планы серьезные, но компания на всякий случай оформила несколько патентов по интеграцию камеры в ремешок, один из которых датируется еще 2016 годом. За это время камера так и не появилась в новых версиях, но то ли еще будет.

    Сообщается, что фотографировать будет возможно с помощью голосового управления или зажав часы. Судя по изображениям, чтобы снять с нужного ракурса, достаточно повернуть ремешок (что выглядит намного удобнее, чем поворачивать руку, если бы камера была встроена в сам корпус).
  • iPad обрастает количеством возможных сопрягаемых устройств: кроме клавиатуры и стилуса, в iPadOS появилась поддержка компьютерной мыши. Официального анонса не было, эта функциональность отключена по умолчанию, но может быть включена в настройках Универсального доступа.
  • Apple купила стартап Drive.ai, который занимается разработкой самоуправляемого автомобиля. Про то, что Apple работает над собственным автомобилем с автономным управлением, было уже известно, но в прошлом году была новость о том, что проект закрылся. Видимо, нет, работа продолжается.
  • Apple наняла одного из топовых проектировщиков процессоров из ARM для работы над собственным процессором для макбука, сообщает Bloomberg. Судя по имеющейся информации, план по замене интеловских процессоров уже существует несколько лет, и цель в том, чтобы перейти на свои родимые на базе ARM в 2020 году.

Новости iOS-разработки


  • Разработчики продолжают играться с новой версией ARKit 3, вышло несколько интересных демок: например, одна с возможностью удалять людей с видео в реальном времени. Вероятно, так будет в будущем выглядеть функция «Блокировать пользователя» в социальных сетях для умных очков.

    Пока без конкретного практического использования, но довольно залипательно выглядит разбиение тела на частицы в реальном времени:

    Успели ли вы попробовать сделать что-нибудь подобное с использованием ARKit? Делитесь идеями в комментариях.
  • Сложность языка Swift повышается, с каждым обновлением добавляется все больше функциональности. В Swift 5.1 есть возможность написания оберток для свойств классов и структур (в оригинале property wrappers). Нужны они для того, чтобы декларативно добавить некоторую функциональность и поведение поверх объявленного типа переменной, повышая тем самым безопасность кода.

    Для примера рассмотрим обертку, которая автоматически порежет пробелы и знаки переноса строки в строке:

    import Foundation
    
    @propertyWrapper
    struct Trimmed {
        private(set) var value: String = ""
    
        var wrappedValue: String {
            get { value }
            set { value = newValue.trimmingCharacters(in: .whitespacesAndNewlines) }
        }
    
        init(initialValue: String) {
            self.wrappedValue = initialValue
        }
    }
    

    Вариант объявления и использования в коде будет выглядеть следующим образом:

    struct Post {
        @Trimmed var title: String
        @Trimmed var body: String
    }
    
    let quine = Post(title: "  Swift Property Wrappers  ", body: "...")
    quine.title // "Swift Property Wrappers" (no leading or trailing spaces!)
    
    quine.title = "      @propertyWrapper     "
    quine.title // "@propertyWrapper" (still no leading or trailing spaces!)
    

    Более подробно читайте в статье Swift Property Wrappers.

    Тем временем на GitHub уже появилась коллекция врапперов, которые могут быть полезны.
  • Есть две статьи по использованию фрейморка Combine: Getting started with the Combine framework in Swift и Combine framework in action. Выберите одну или читайте обе!
  • Оказывается, новую фичу Xcode 11 Preview можно использовать без SwiftUI, но придется менять минимально поддерживаемую версии iOS, что выглядит немного костыльно и, возможно, не применимо для существующего большого проекта. Порядок действий можно найти здесь.
  • Если вас, как и меня, интересует вопрос синхронизации клиентских данных, то обязательно прочтите статью Apple’s New CloudKit-Based Core Data Sync. В ней разработчик библиотеки синхронизации данных Ensembles размышляет о новой реинкарнации CloudKit фреймворка синхронизации на базе CoreData от Apple.
    Для интересующихся: на прошедшем в мае Mobius мне довелось выступить с докладом про проблемы синхронизации данных на мобильных клиентах при совместном редактировании. Кроме того, в июле можно будет лично пообщаться с одним из амбассадоров вопросов синхронизации данных Мартином Клеппманом на конференции Hydra 2019, которая пройдёт 11-12 июля 2019 года в Санкт-Петербурге. А пока есть возможность почитать с ним большое интервью.
  • В твиттере сообщают, что производительность анимации SwiftUI-ного интерфейса не уступает примитивам, написанным с помощью CALayer и CoreGraphics.

    SwiftUI может обрабатывать в 5-10 раз больше примитивов до того, как производительность упадет ниже 60 FPS.

Комментарии (1)


  1. RepinTech
    28.06.2019 15:39

    Насчет своего процессора в макбуке любопытно.