苹果在iOS14中使用Swift和SwiftUI

2020-09-28 03:52:45

几年前,斯威夫特在苹果2014全球开发者大会上亮相。多年来,我对iOS进行了分析,以衡量有多少内置应用程序正在使用SWIFT。2015年发布的iOS 9包含一个用SWIFT编写的应用程序:Calculator。从那时起,这个数字随着每个IOS版本的增加而增加:IOS 10.1、IOS 11.1、IOS 12.0,最后是IOS 13.1。

IOS14现已面市,让我们来看看这一数字自iOS13年以来是如何演变的。一年前,苹果在WWDC 2019期间发布了SwiftUI。在本文中,我还将尝试衡量哪些内置应用程序正在使用这个新的UI框架。

本文使用的方法和工具已在前面的帖子中详细介绍过。如果您感兴趣,请参考苹果在iOS 10.1和MacOS 10.12中使用SWIFT。

IOS 14.0包含351个使用SWIFT的二进制文件和框架。请注意,这些二进制文件可能包含一行SWIFT代码,不一定完全用SWIFT编写。此列表是使用适用于iPhone 11 Pro Max的iOS 14.0(18A373)构建的:

/Applications/ActivityMessagesApp.app/PlugIns/ActivityMessagesExtension.appex/ActivityMessagesExtension/Applications/AppStore.app/AppStore/Applications/AppStore.app/PlugIns/ProductPageExtension.appex/ProductPageExtension/Applications/AppStore.app/PlugIns/SubscribePageExtension.appex/SubscribePageExtension/Applications/BusinessExtensionsWrapper.app/PlugIns/Business.appex/Business/Applications/Diagnostics.app/Diagnostics/Applications/FindMy.app/FindMy/Applications/FindMy.app/PlugIns/FindMyNotificationsContent.appex/FindMyNotificationsContent/Applications/FindMy.app/PlugIns/FindMyNotificationsService.appex/FindMyNotificationsService/Applications/FindMy.app/PlugIns/FindMySiriIntents.appex。/FindMySiriIntents/Applications/FTMInternal-4.app/FTMInternal-4/Applications/GameCenterUIService.app/PlugIns/GameCenterMessageExtension.appex/GameCenterMessageExtension/Applications/Health.app/Health/Applications/HealthENBuddy.app/HealthENBuddy/Applications/HealthENLauncher.app/HealthENLauncher/Applications/InCallService.app/InCallService/Applications/Magnifier.app/Magnifier/Applications/MobilePhone.app/MobilePhone/Applications/MobileSlideShow.app/PlugIns/PhotosReliveWidget.appex/PhotosReliveWidget/Applications/MobileTimer.app/PlugIns/WorldClockWidget.appex/WorldClockWidget/Applications/SharingViewService.app/SharingViewService/Applications/Sidecar.app/PlugIns。/ContinuityCamera.appex/ContinuityCamera/Applications/Sidecar.app/PlugIns/ContinuityDisplay.appex/ContinuityDisplay/Applications/Sidecar.app/PlugIns/ContinuityMarkup.appex/ContinuityMarkup/Applications/Sidecar.app/PlugIns/ContinuitySignature.appex/ContinuitySignature/Applications/Sidecar.app/PlugIns/ContinuitySketch.appex/ContinuitySketch/Applications/Sidecar.app/Sidecar/Applications/SleepLockScreen.app/SleepLockScreen/private/var/staged_system_apps/AppleTV.app/PlugIns/TVWidgetExtension.appex/TVWidgetExtension/private/var/staged_system_apps/Books.app/Books/private/var。/staged_system_apps/Books.app/Frameworks/BookCore.framework/BookCore/private/var/staged_system_apps/Books.app/Frameworks/JSApp.framework/JSApp/private/var/staged_system_apps/Calculator.app/Calculator/private/var/staged_system_apps/Files.app/Files/private/var/staged_system_apps/Fitness.app/Fitness/private/var/staged_system_apps/Fitness.app/PlugIns/FitnessWidget.appex/FitnessWidget/private/var/staged_system_apps。/Maps.app/PlugIns/GeneralMapsWidget.appex/GeneralMapsWidget/private/var/staged_system_apps/Measure.app/Measure/private/var/staged_system_apps/MobileCal.app/PlugIns/CalendarWidgetExtension.appex/CalendarWidgetExtension/private/var/staged_system_apps/MobileNotes.app/MobileNotes/private/var/staged_system_apps/MobileNotes.app/PlugIns/com.apple.mobilenotes.SharingExtension.appex/com.apple.mobilenotes.SharingExtension/private/var/staged_system_apps/MobileNotes.app/PlugIns/com.apple。.mobilenotes.WidgetExtension.appex/com.apple.mobilenotes.WidgetExtension/private/var/staged_system_apps/Music.app/Frameworks/MusicApplication.framework/MusicApplication/private/var/staged_system_apps/Music.app/Frameworks/MusicApplication.framework/XPCServices/MusicScriptUpdateService.xpc/MusicScriptUpdateService/private/var/staged_system_apps/Music.app/Music/private/var/staged_system_apps/Music.app/PlugIns/MediaPicker.appex/MediaPicker/private/var/staged_system_apps/Music.app/PlugIns/MusicMessagesApp。.appex/MusicMessagesApp/private/var/staged_system_apps/Music.app/PlugIns/MusicNotificationContentExtension.appex/MusicNotificationContentExtension/private/var/staged_system_apps/Music.app/PlugIns/MusicWidgets.appex/MusicWidgets/private/var/staged_system_apps/Music.app/PlugIns/PlaybackIntent.appex/PlaybackIntent/private/var/staged_system_apps/News.app/PlugIns/NewsAudioExtension.appex/NewsAudioExtension/private/var/staged_system_apps/News.app/PlugIns/NewsTag.appex/NewsTag/private/var/staged。_system_apps/News.app/PlugIns/NewsToday2.appex/NewsToday2/private/var/staged_system_apps/News.app/PlugIns/NewsTodayIntents.appex/NewsTodayIntents/privat

可以使用以下行轻松调整检测SWIFT的脚本以检测SWIFT UI:

到目前为止,我还没有在iOS中发布使用SwiftUI的应用程序列表。为了获得第一个参考,我为iOS13.7建立了列表。不足为奇的是,iOS13.7只包含少数依赖于SwiftUI的二进制文件:

IOS 14.0包含更多使用SwiftUI的二进制文件。主要原因无疑是WidgetKit,这是第一个公开的仅限SwiftUI的框架。iOS14中提供的每个小部件都出现在此列表中。IOS14的另一个闪亮的新功能是翻译应用程序,它似乎是用SwiftUI构建的。

毫不奇怪,全新的iOS14功能是用一些SWIFT代码构建的。IOS14最显著的特点之一就是在主屏幕上增加了窗口小部件。小部件是使用WidgetKit构建的,WidgetKit是第一个仅支持SwiftUI的框架。这就解释了为什么今年SwiftUI的采用如此之快。IOS14的另一个重要新功能是翻译应用程序,它似乎是用SwiftUI构建的。

如果不包括SWIFT库,iOS 14.0包含291个使用SWIFT的二进制文件,是iOS 13的两倍多。还值得注意的是,iOS 14迅速采用了SwiftUI,有43个二进制文件。