iOS 15 中 Swift 和 SwiftUI 的使用情况

移动开发
iOS 15 于 2021 年 9 月发布。但你知道 iOS 15 有多少个二进制文件吗?它使用了哪些编程语言来开发这些应用程序?有多少应用程序是用 Swift 编写的?Apple 是否为某些内置应用程序采用了 SwiftUI?

iOS 15 于 2021 年 9 月发布。但你知道 iOS 15 有多少个二进制文件吗?它使用了哪些编程语言来开发这些应用程序?有多少应用程序是用 Swift 编写的?Apple 是否为某些内置应用程序采用了 SwiftUI?

[[441631]]

近日,开发者通过分析 iOS 15 的内置应用得出了结论(这里开发者分析的 iOS 指内核之上的一切东西,不包括 XNU 内核和底层固件)。

iOS 15 中的 Swift 和 SwiftUI

iOS 15 包含 114 个使用 SwiftUI 的二进制文件,几乎是 iOS 14 的 3 倍。同样,包含至少一行 Swift 代码的二进制文件的数量在 iOS 14 和 iOS 15 之间多了差不多两倍:

如图表所示,Apple 继续在其内置应用程序中逐步采用 Swift。今年也是采用 SwiftUI 的重要一年。一些广泛使用的应用程序现在似乎在 iOS 15 中使用 SwiftUI:

  • Books
  • Maps
  • Notes
  • Weather
  • Tips
  • Music
  • Podcasts
  • FaceTime? (InCallService)
  • AppSettings?

还有在 iOS 15 之前就已开始使用 SwiftUI 的 5 个应用:

  • Translate
  • Shortcuts
  • Phone
  • AirPods Connect Pop-up? (SharingViewService)
  • Lock Screen? (SleepLockScreen)

其他使用 SwiftUI 的二进制文件主要是小部件或新框架。下面是使用 SwiftUI 的 114 个二进制文件的完整列表:

 

  1. /Applications/AppSettings.app/AppSettings 
  2. /Applications/AppStore.app/PlugIns/AppStoreWidgetsExtension.appex/AppStoreWidgetsExtension 
  3. /Applications/FamilyControlsAuthenticationUI.app/FamilyControlsAuthenticationUI 
  4. /Applications/FindMy.app/PlugIns/FindMyWidgetIntentsItems.appex/FindMyWidgetIntentsItems 
  5. /Applications/FindMy.app/PlugIns/FindMyWidgetIntentsPeople.appex/FindMyWidgetIntentsPeople 
  6. /Applications/FindMy.app/PlugIns/FindMyWidgetItems.appex/FindMyWidgetItems 
  7. /Applications/FindMy.app/PlugIns/FindMyWidgetPeople.appex/FindMyWidgetPeople 
  8. /Applications/FTMInternal-4.app/FTMInternal-4 
  9. /Applications/GameCenterWidgets.app/PlugIns/GCWidgets.appex/GCWidgets 
  10. /Applications/InCallService.app/InCallService 
  11. /Applications/PeopleViewService.app/PlugIns/PeopleWidget_iOSExtension.appex/PeopleWidget_iOSExtension 
  12. /Applications/SleepWidgetContainer.app/PlugIns/SleepWidgetExtension.appex/SleepWidgetExtension 
  13. /private/var/staged_system_apps/Books.app/Books 
  14. /private/var/staged_system_apps/Maps.app/Maps 
  15. /private/var/staged_system_apps/MobileMail.app/PlugIns/MailWidgetExtension.appex/MailWidgetExtension 
  16. /private/var/staged_system_apps/MobileNotes.app/MobileNotes 
  17. /private/var/staged_system_apps/MobileNotes.app/PlugIns/com.apple.mobilenotes.SharingExtension.appex/com.apple.mobilenotes.SharingExtension 
  18. /private/var/staged_system_apps/Music.app/Frameworks/MusicApplication.framework/MusicApplication 
  19. /private/var/staged_system_apps/Podcasts.app/Frameworks/PodcastsStoreUI.framework/PodcastsStoreUI 
  20. /private/var/staged_system_apps/Shortcuts.app/PlugIns/QuickLookExtension.appex/QuickLookExtension 
  21. /private/var/staged_system_apps/Tips.app/Tips 
  22. /private/var/staged_system_apps/Weather.app/Weather 
  23. /System/Library/Assistant/UIPlugins/SiriFindMyUIPlugin.siriUIBundle/SiriFindMyUIPlugin 
  24. /System/Library/Frameworks/_CoreLocationUI_SwiftUI.framework/_CoreLocationUI_SwiftUI 
  25. /System/Library/Frameworks/_MusicKit_SwiftUI.framework/_MusicKit_SwiftUI 
  26. /System/Library/Frameworks/FamilyControls.framework/FamilyControls 
  27. /System/Library/Frameworks/FamilyControls.framework/PlugIns/ActivityPickerExtension.appex/ActivityPickerExtension 
  28. /System/Library/Health/FeedItemPlugins/Heart.healthplugin/Heart 
  29. /System/Library/Health/FeedItemPlugins/Highlights.healthplugin/Highlights 
  30. /System/Library/Health/FeedItemPlugins/MenstrualCyclesAppPlugin.healthplugin/MenstrualCyclesAppPlugin 
  31. /System/Library/Health/FeedItemPlugins/SleepHealthAppPlugin.healthplugin/SleepHealthAppPlugin 
  32. /System/Library/Health/FeedItemPlugins/Summaries.healthplugin/Summaries 
  33. /System/Library/PreferenceBundles/BatteryUsageUI.bundle/BatteryUsageUI 
  34. /System/Library/PreferenceBundles/CoreRoutineSettings.bundle/CoreRoutineSettings 
  35. /System/Library/PreferenceBundles/FocusSettings.bundle/FocusSettings 
  36. /System/Library/PrivateFrameworks/AccessibilitySharedUISupport.framework/AccessibilitySharedUISupport 
  37. /System/Library/PrivateFrameworks/ActionKitUI.framework/ActionKitUI 
  38. /System/Library/PrivateFrameworks/CommandAndControlUI.framework/CommandAndControlUI 
  39. /System/Library/PrivateFrameworks/CoreChartSwift.framework/CoreChartSwift 
  40. /System/Library/PrivateFrameworks/CoreSuggestionsUI.framework/CoreSuggestionsUI 
  41. /System/Library/PrivateFrameworks/FocusSettingsUI.framework/FocusSettingsUI 
  42. /System/Library/PrivateFrameworks/FocusUI.framework/FocusUI 
  43. /System/Library/PrivateFrameworks/HealthExperienceUI.framework/HealthExperienceUI 
  44. /System/Library/PrivateFrameworks/HealthRecordsUI.framework/HealthRecordsUI 
  45. /System/Library/PrivateFrameworks/HealthVisualization.framework/HealthVisualization 
  46. /System/Library/PrivateFrameworks/HearingUI.framework/HearingUI 
  47. /System/Library/PrivateFrameworks/MediaFoundation.framework/MediaFoundation 
  48. /System/Library/PrivateFrameworks/MessagesSupport.framework/MessagesSupport 
  49. /System/Library/PrivateFrameworks/MLKit.framework/MLKit 
  50. /System/Library/PrivateFrameworks/MLKit.framework/PlugIns/com.apple.MLKit.MLModelPreview.appex/com.apple.MLKit.MLModelPreview 
  51. /System/Library/PrivateFrameworks/MLKit.framework/PlugIns/com.apple.MLKit.MLPackagePreview.appex/com.apple.MLKit.MLPackagePreview 
  52. /System/Library/PrivateFrameworks/NotesUI.framework/NotesUI 
  53. /System/Library/PrivateFrameworks/PaymentUI.framework/PaymentUI 
  54. /System/Library/PrivateFrameworks/PeopleUI.framework/PeopleUI 
  55. /System/Library/PrivateFrameworks/PreviewsInjection.framework/PreviewsInjection 
  56. /System/Library/PrivateFrameworks/PreviewsMessaging.framework/PreviewsMessaging 
  57. /System/Library/PrivateFrameworks/ScreenTimeUICore.framework/ScreenTimeUICore 
  58. /System/Library/PrivateFrameworks/SleepHealthUI.framework/SleepHealthUI 
  59. /System/Library/PrivateFrameworks/SleepWidgetUI.framework/SleepWidgetUI 
  60. /System/Library/PrivateFrameworks/SnippetUI.framework/SnippetUI 
  61. /System/Library/PrivateFrameworks/TipKit.framework/TipKit 
  62. /System/Library/PrivateFrameworks/TranslationUI.framework/TranslationUI 
  63. /System/Library/PrivateFrameworks/TranslationUIServices.framework/PlugIns/TranslationUIService.appex/TranslationUIService 
  64. /System/Library/PrivateFrameworks/VideosUI.framework/VideosUI 
  65. /System/Library/PrivateFrameworks/WeatherUI.framework/WeatherUI 
  66. /System/Library/PrivateFrameworks/WorkflowUI.framework/WorkflowUI 
  67. /System/Library/Snippets/UIPlugins/AudioUIPlugin.bundle/AudioUIPlugin 
  68. /System/Library/Snippets/UIPlugins/SiriVideoUIPlugin.bundle/SiriVideoUIPlugin 
  69. /System/Library/Snippets/UIPlugins/SystemPlugin.bundle/SystemPlugin 
  70. /usr/lib/swift/libswiftExtensionKit.dylib 
  71. /usr/libexec/proximitycontrold 

二进制文件总数

iOS 15 由 4738 个二进制文件组成,高于 iOS 14 中的 4173 个,新增了 565 个新二进制文件。

编程语言的演变

通过分析从 iPhone OS 1.0 到 iOS 15 的所有 iOS 主要版本,可以看到 iOS 使用的编程语言的演变。请注意,单个二进制文件可以计算多次,因此下图中二进制文件的总和大于二进制文件的总数:

在 iOS 15 中的所有二进制文件中:

  • 89% 使用 Objective-C
  • 17% 使用 C++
  • 13% 使用 Swift
  • 8% 完全用 C 编写
  • 2% 使用 SwiftUI

由此可见:

  • Objective-C 仍然是 iOS 的核心
  • Apple 对 Swift 的使用比以往任何时候都更快。去年 Swift 的代码量比例超过了 C,今年则越来越接近 C++
  • SwiftUI 去年几乎没有引起人们的注意,但今年 Apple 似乎更广泛地采用了它,即使是在旗舰应用程序中
  • C++ 和 C 仍然扮演着重要的角色。这些语言通常由与音频、视频、电话、Web 和其他底层框架相关的二进制文件使用

下图是每种编程语言演变的另一种表示形式:

最后,这名开发者提供了原始数据,如果你也希望进行更深入的分析,可查看从 iPhone OS 1.0 到 iOS 15.0 的所有主要 iOS 版本生成的原始数据。

本文转自OSCHINA

本文标题:iOS 15 中 Swift 和 SwiftUI 的使用情况

本文地址:https://www.oschina.net/news/174934/state-of-swift-and-swiftui-ios15

责任编辑:未丽燕 来源: 开源中国
相关推荐

2021-12-24 08:55:58

苹果 iOS 15 SwiftUI

2009-06-30 14:11:00

Hibernate缓存

2010-10-14 16:10:28

MySQL排序

2017-01-18 21:57:14

2022-07-13 14:26:26

Linux

2015-11-09 15:32:34

TorTor网络隐私网络

2020-12-07 14:20:35

Linux磁盘工具

2010-04-09 13:17:32

2018-07-06 14:52:49

Docker容器云服务

2020-02-10 19:50:08

Linux内存使用命令

2009-07-09 18:03:25

tomcatJVM内存

2010-05-12 15:14:59

subversion管

2021-03-26 07:17:38

Linux命令磁盘

2010-04-16 10:00:06

Oracle查看表空间

2009-06-16 09:18:26

Linux系统管理系统资源

2010-06-02 11:06:15

Linux 内存监控

2010-02-03 17:16:58

Linux内存使用

2017-11-30 18:42:22

PythonCPU脚本分析

2020-02-04 13:50:09

Linux进程内存使用

2020-06-17 14:10:01

Python内存程序
点赞
收藏

51CTO技术栈公众号