Site icon AppTractor

Использование Apple AppKit, Mac Catalyst и SwiftUI в macOS

WWDC 2019 оказала большое влияние на инструменты разработки UI: в то время как почтенные API-интерфейсы AppKit оставались доступными, Apple удалила старые API-интерфейсы Carbon и представила 2 совершенно новых фреймворка — Mac Catalyst и SwiftUI.

Apple время от времени упоминает некоторые приложения, созданные с помощью этих новых инструментов. В этой статье я попытаюсь дать лучший обзор использования Apple AppKit, Mac Catalyst и SwiftUI в различных версиях macOS, от macOS Mojave до macOS Ventura.

AppKit, Mac Catalyst и SwiftUI

Начиная с macOS Catalina, разработчики могут создавать нативный пользовательский интерфейс для своих Mac приложений, используя 3 различные технологии пользовательского интерфейса: AppKit, Mac Catalyst и SwiftUI. Если вы не знакомы с этими технологиями, вот краткое описание.

AppKit

AppKit — это старый набор инструментов Cocoa, доступный разработчикам Mac, начиная с Mac OS X 10.0. Это мощное и зрелое решение, но совсем не будущее Mac разработки, как было ясно объяснено во время WWDC 2022 State of the Union.

Почему я использовал AppKit для разработки Dependencies, приложения для анализа файлов dSYM и создания интерактивного графа? Dependencies основан на большом количестве C++ кода, использование Objective-C и AppKit было самым простым решением.

Mac Catalyst

Нативные приложения для iOS используют UIKit, производный фреймворк от AppKit. Mac Catalyst — это технология для переноса приложения iOS с помощью UIKit на Mac.

Clatters, мое iOS-приложение для мониторинга ключевых слов в Twitter, Reddit и HackerNews, может стать отличным кандидатом на использование Mac Catalyst.

SwiftUI

На WWDC 2019 Apple не только представила Mac Catalyst, но также анонсировала SwiftUI, совершенно новый UI фреймворк для декларативного создания  пользовательского интерфейса. SwiftUI все еще молод, но быстро развивается и является будущим разработки для iOS и Mac. SwiftUI — это технология, которую мы используем для создания новых приложений в Eimy.

Методология и инструменты

Методология и инструменты для этой статьи аналогичны тем, которые я использовал для iOS. Если вас интересует углубленный анализ iOS, вам лучше ознакомиться с моей статьей “Эволюция языков программирования: использование Swift, SwiftUI и Obj-C в iOS 15”.

Для этой статьи я создал скрипт, который:

Вы можете скачать скрипт detectUIFramework.sh здесь.

Прежде чем углубляться в детали, обратите внимание:

AppKit против Mac Catalyst против SwiftUI

Хороший обзор распределения AppKit, Mac Catalyst и SwiftUI можно увидеть, сгруппировав приложения в 3 категории:

Как вы можете видеть на графике:

Детальный анализ

macOS Mojave: эксперимент с Marzipan

С macOS Mojave Apple перенесла 4 приложения с iOS на macOS, используя Marzipan, внутреннее название технологии Mac Catalyst:

Marzipan был ограничен собственным использованием Apple и не был открыт для сторонних разработчиков. С помощью этой совершенно новой технологии было сделано всего 4 приложения, которые вряд ли чем-нибудь рисковали.

macOS Catalina: представлены Mac Catalyst и SwiftUI

С macOS Catalina Apple открыла Mac Catalyst для сторонних разработчиков, одновременно протестировав его в 3 новых приложениях:

SwiftUI также был представлен, но только одно приложение использовало эту технологию в macOS Catalina: приложение «Контакты», эксперимент с низким уровнем риска.

macOS Big Sur: больше не эксперимент

В macOS Big Sur несколько важных приложений перешли на Mac Catalyst:

Несколько других приложений начали использовать SwiftUI, в том числе:

Также стоит отметить, что в macOS Big Sur представили переработанные виджеты для Центра уведомлений. Эти виджеты созданы с помощью WidgetKit, фреймворка SwiftUI:

macOS Monterey: совершенно новые приложения SwiftUI

В macOS Monterey только несколько новых приложений были созданы с использованием Mac Catalyst:

Что более интересно, так это список новых приложений, использующих SwiftUI. Стоит отметить:

К Dock.prefpane также присоединились 2 новых префпана:

И несколько приватных фреймворков начали использовать SwiftUI:

macOS Ventura: будущее за SwiftUI

В macOS Ventura, кажется, Apple перенесла оставшиеся приложения iOS на Mac. Было добавлено всего 3 новых приложения:

С другой стороны, пара приложений была переписана на SwiftUI:

Также стоит отметить, что эти закрытые фреймворки теперь используют SwiftUI:

Более детальный анализ

На следующем графике я разделил приложения на 6 категорий:

Вывод

Несмотря на то, что у нас нет доступа к исходному коду macOS, мы можем измерить использование Mac Catalyst и SwiftUI во встроенных приложениях.

Как мы видим, выпуск Mac Catalyst тщательно планировался в течение нескольких лет. Apple изначально использовала эту новую технологию для приложений с низким уровнем риска, а затем применила ее для более важных приложений, таких как Карты и Сообщения. Спустя 4 года после его появления количество приложений, использующих Mac Catalyst, похоже, не изменилось. Скорее всего, Apple уже перенесла все существующие приложения на Mac и теперь использует SwiftUI для своих новых приложений.

Apple применила аналогичный подход для SwiftUI. Первые годы были экспериментом с небольшим количеством приложений с низким уровнем риска. Использование SwiftUI начало быстро расти с macOS Monterey. В macOS Ventura 12% приложений теперь используют SwiftUI.

Как упоминалось ранее, этот подход имеет некоторые ограничения, и, хотя я считаю, что общая картина точна, я не могу гарантировать, что результаты будут абсолютно точными. Если вы считаете, что я что-то упустил, напишите мне в Twitter.

Дополнение

Стив Тротон-Смит указал, что /System/iOSSupport — это значительная часть macOS, и поэтому нельзя игнорировать двоичные файлы в этой папке (и связанные с ними фреймворки в общем кэше dyld). В первоначальном анализе я исключил все двоичные файлы, расположенные внутри /System/iOSSupport, поскольку они поддерживают только приложения Mac Catalyst и iOS.

Ниже приведен обновленный график, если вы включите /System/iOSSupport и сгруппируете приложения в 3 категории:

Exit mobile version