Connect with us

Разработка

Использование Apple Swift и SwiftUI в iOS 16

Опубликовано

/

     
     

iOS 16 только что вышла, поэтому давайте проанализируем ее встроенные приложения. Как и в прошлые годы, я постараюсь ответить на несколько вопросов. Сколько бинарников в iOS 16? Какие языки программирования используются для разработки этих приложений? Сколько приложений написано на Swift? Каков процент приложений, использующих SwiftUI, по сравнению с UIKit?

Методология

Методология и инструменты для создания этой статьи были подробно описаны в предыдущих постах. Если вы заинтересованы, пожалуйста, обратитесь к:

Прежде чем перейти к деталям, давайте проясним несколько моментов:

  • Я анализировал только то, что обычно называют «iOS», то есть все, что выше ядра. Ядро XNU и низкоуровневое firmware  (SecureROM, Baseband, …) не включены, даже если Secure Enclave теперь содержит код Swift. С другой стороны, я посчитал фреймворки, расположенные внутри общего кэша dyld — механизма, представленного в iPhone OS 3.1.
  • Имейте в виду, что разработчик может смешивать разные языки программирования для создания одного двоичного файла. Одним из примеров является разработанное мной приложение Clatters, в котором я использую Swift, SwiftUI, Objective-C и C, наиболее подходящий язык программирования, используемый для решения каждой конкретной проблемы. В этой статье приложение, содержащее одну строку кода Swift, будет считаться использующим Swift.
  • Вы увидите упоминания о Objective-C и C++, но можете заметить отсутствие Objective-C++. Используемый здесь подход не может действительно обнаруживать двоичные файлы, созданные с помощью Objective-C++. Такие двоичные файлы считаются использующими как Objective-C, так и C++.
  • Наконец, вы должны принять этот анализ с определенным недоверием. Хотя я считаю, что общая картина верна, мой подход имеет некоторые ограничения из-за того простого факта, что у меня нет доступа к исходному коду iOS и я полагался на неточные артефакты компиляции.

Количество бинарников

Давайте сначала ответим на простой вопрос: сколько бинарников в iOS 16? Количество двоичных файлов, составляющих iOS, продолжает расти: iOS 16 содержит 5403 двоичных файла по сравнению с 4738 в iOS 15. Это 665 новых двоичных файлов.

Использование Apple Swift и SwiftUI в iOS 16

Swift и SwiftUI в iOS 16

Во время презентации Platforms State of the Union на WWDC 2022 Apple поделилась своим видением платформы, сделав заявление, адресованное разработчикам, создающим новое приложение: «Лучший способ создать приложение — использовать Swift и SwiftUI». Давайте сравним это заявление с собственным использованием Apple Swift и SwiftUI в iOS 16.

Неудивительно, что мы можем четко подтвердить, что некоторые из новых функций iOS 16 были созданы с использованием SwiftUI:

  • Live Activities (с фреймворком SportsKit)
  • Live Captions (с LiveTranscriptionUI)
  • Shared with You (фреймворк SharedWithYou и, возможно, CloudSharingUI, GroupActivities, PeopleViewService)
  • Фреймворк Swift Charts

При выполнении этого анализа меня удивило одно число: iOS 16 содержит только 4 приложения, использующие жизненный цикл приложения на основе SwiftUI:

/Applications/Batteries.app/Batteries
/Applications/FTMInternal-4.app/FTMInternal-4
/private/var/staged_system_apps/Weather.app/Weather
/System/Library/CoreServices/AegirProxyApp.app/AegirProxyApp

Тем не менее, внедрение Swift и SwiftUI продолжает экспоненциальный рост: iOS 16 содержит 226 двоичных файлов, использующих SwiftUI, что вдвое больше, чем в iOS 15. Точно так же количество двоичных файлов, содержащих хотя бы одну строку кода Swift, соответственно увеличилось от iOS 15 к iOS 16:

Использование Apple Swift и SwiftUI в iOS 16

Некоторые существующие приложения и фреймворки начали внедрять SwiftUI и они заслуживают упоминания:

  • AirDropUI
  • AirPlayReceiver
  • Batteries
  • Фреймворк ContactsUI
  • FaceTime
  • Фитнес (и связанный с ним фреймворк WorkoutCore)
  • Здоровье
  • Фреймворк HomeUI, на котором работает Home.app
  • Подкасты (и связанная с ними платформа PodcastsUI)
  • Фреймворк ProximityAppleIDSetupUI
  • Некоторые двоичные файлы, связанные с Apple Pay (ContactlessReaderUI, CoreIDVUI, FinanceKitUI, PaymentUIBase, …)
  • Некоторые двоичные файлы, связанные с музыкой (AppleMediaServicesUI, _MusicKitInternal_SwiftUI, ClarityBoard, …)
  • Некоторые двоичные файлы, связанные с Shazam (ShazamKitUI, ShazamViewService)
  • Ассистент обратной связи iOS

Эволюция языков программирования

Анализируя все основные выпуски iOS от iPhone OS 1.0 до iOS 16, мы можем увидеть эволюцию языков программирования, используемых в iOS. Еще раз обратите внимание, что один двоичный файл может быть подсчитан несколько раз, поэтому сумма двоичных файлов на этом графике больше, чем общее количество двоичных файлов:

Использование Apple Swift и SwiftUI в iOS 16

Некоторые тенденции можно лучше визуализировать, отображая проценты:

Использование Apple Swift и SwiftUI в iOS 16

Что мы можем узнать из этих графиков?

  • Objective-C лежит в основе iOS и прямо или косвенно используется большинством приложений.
  • Использование Swift быстро увеличивается по сравнению с прошлыми версиями iOS. В этом году Swift наконец превзошел C++.
  • Использование C++ стабильно на протяжении многих лет.
  • SwiftUI становится заметным, что является отличным признаком: Apple занимается экспериментальной проверкой собственного фреймворка.
  • C медленно, но верно угасает

UIKit против SwiftUI

До сих пор мы сравнивали SwiftUI со всеми бинарниками. Поскольку SwiftUI является UI-фреймворком, было бы справедливее сравнить его с другими двоичными файлами, отображающими некоторый пользовательский интерфейс. Нативные iOS-приложения можно создавать с помощью двух разных UI-фреймворков: UIKit и SwiftUI (обратите внимание, что оба можно смешивать). Мой подход к подсчету количества двоичных файлов, содержащих пользовательский интерфейс, не идеален, но может приблизительно определять тенденцию — я просто проверяю, связаны ли двоичные файлы с платформами UIKit или SwiftUI.

Использование Apple Swift и SwiftUI в iOS 16

Отображая проценты, мы можем подтвердить, что SwiftUI явно растет в собственных приложениях Apple:

Использование Apple Swift и SwiftUI в iOS 16

Вывод

Несмотря на то, что у нас нет доступа к исходному коду iOS, мы можем определить языки программирования, используемые для создания встроенных приложений в iOS, и мы можем измерить эволюцию этих языков от iPhone OS 1.0 до iOS 16.

Принятие Swift продолжает экспоненциальный рост и в этом году язык превзошел C++. Точно так же SwiftUI начинает все больше использоваться самой Apple: количество двоичных файлов, использующих SwiftUI, удвоилось от iOS 15 к iOS 16. Apple использует собственные платформы — хороший знак для этих фреймворков.

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

Источник

 

Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.
Advertisement

Популярное

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: