成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

蘋果在 iOS 15 中使用了 Swift 和 SwiftUI

移動開發 iOS
蘋果繼續將 Swift 用于自己的應用程序:在 iOS 14 和 iOS 15 之間,使用 Swift 的二進制文件數量翻了一番。大約13% 的二進制文件現在使用了 Swift。

[[441823]]

前言

iOS 15 在幾個月前的 2021 年 9 月發布。在本文中,我分析了 iOS 15 的內置應用程序 :

  • iOS 15 中有多少個二進制文件?
  • 開發這些應用程序使用了哪種編程語言?
  • 使用 Swift 編寫了多少個應用程序?
  • 蘋果是否在某些內置應用程序采用了 SwiftUI?

方法

創建本文的方法和工具在我之前的帖子中進行了詳細說明。如果您感興趣,請參考:

  • 編程語言從 iPhone OS 1.0 到 iOS 14 的演變[1]
  • 蘋果在 iOS 10.1 和 macOS 10.12 中使用了Swift[2]

在深入討論細節之前,讓我澄清幾點:

  • 我只分析了通常意義上的 'iOS',即內核上方的所有內容。不包括 XNU 內核和低級固件(SecureROM、基帶、...)。另一方面,我計算了位于 iPhone OS 3.1 中引入的 dyld 共享緩存中的框架。
  • 請記住,開發人員可以混合不同的編程語言來創建一個二進制文件。一個例子是我開發的應用程序 Clutters[3],我在那里使用 Swift、SwiftUI、Objective-C 和 C,使用最合適的編程語言來解決特定Dev問題。在本文中,包含一行 Swift 代碼的應用程序將被視為使用了 Swift 。
  • 您將看到 Objective-C 和 C++ 被提及,但您可能會注意到 Objective-C++ 的缺失。這里使用的方法無法真正檢測到使用 Objective-C++ 構建的二進制文件。此類二進制文件被視為同時使用 Objective-C 和 C++ 。
  • 最后,你應該對這個分析持保留態度。雖然我相信總體情況是準確的,但我的方法有一些局限性,因為我無法訪問 iOS 源代碼,并且依賴于不精確的編譯工件。

iOS 15 中的 Swift 和 SwiftUI

也許最有趣的數字之一是統計蘋果在iOS 15中使用 Swift 和 SwiftUI 的情況。所以讓我們從這個開始吧!

iOS 15 包含了 114 個使用 SwiftUI 的二進制文件,幾乎是 iOS 14 的 3 倍。同樣,在iOS 14 和 iOS 15 之間,包含至少一行 Swift 代碼的二進制文件數量翻了一番:

如您所見,蘋果繼續逐步采用 Swift 開發自己的內置應用程序。今年也是采用 SwiftUI 的重要一年。一些廣泛使用的應用程序現在似乎在 iOS 15 中使用 SwiftUI:

  • 圖書
  • 地圖
  • 備忘錄
  • 天氣
  • 提示
  • 音樂
  • 播客
  • FaceTime ?(InCallService)
  • 設置?

這些新應用程序加上之前使用 SwiftUI 的 5 個應用程序:

  • 翻譯
  • 快捷指令
  • 電話
  • AirPods 連接彈出窗口?(SharingViewService)
  • 鎖屏?(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 中找到多少個二進制文件?

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 的核心,不會很快消失。
  • 蘋果對 Swift 的使用進展得比以往任何時候都快。去年,Swift 超過了C。今年,Swift 越來越接近 C++。
  • SwiftUI 去年幾乎不引人注目,但今年蘋果似乎更廣泛地采用了它,即使在旗艦應用程序中也是如此。
  • C++ 和 C 仍然發揮著重要作用。這些語言通常用于與音頻、視頻、電話、網絡和其他底層框架相關的二進制文件。

以下是各種編程語言演變的另一個表示:

各種編程語言演變

原始數據

如果您想進行更深入的分析,您可以在我為從iPhone OS 1.0 到 iOS 15.0 的所有主要版本生成的原始數據下方下載。

結論

即使我們無法訪問 iOS 源代碼,我們也可以確定用于在 iOS 中創建內置應用程序的編程語言,并可以衡量這些語言從 iPhone OS 1.0 到iOS 15的演變。

正如我們所看到的,蘋果繼續將 Swift 用于自己的應用程序:在 iOS 14 和 iOS 15 之間,使用 Swift 的二進制文件數量翻了一番。大約13% 的二進制文件現在使用了 Swift。此外, Swift UI 的采用真正開始于今年,現在有幾個旗艦應用程序使用了 SwiftUI 。

如前面所述,這種方法顯然有一些局限性,雖然我認為整體情況是準確的,但我不能保證結果是完全準確的。如果您認為我遺漏了什么,請在推特上聯系我。

譯自:Apple’s use of Swift and SwiftUI in iOS 15

參考資料

[1]編程語言從 iPhone OS 1.0 到 iOS 14 的演變:

https://blog.timac.org/2020/1019-evolution-of-the-programming-languages-from-iphone-os-to-ios-14/

[2]蘋果在 iOS 10.1 和 macOS 10.12 中使用了Swift:

https://blog.timac.org/2016/1101-apples-use-of-swift-in-ios-10-1-and-macos-10-12/

[3]Clutters:

https://apps.apple.com/app/clatters/id1480930237

 

責任編輯:姜華 來源: Swift社區
相關推薦

2021-12-22 15:13:03

iOS 15Swift二進制

2015-04-17 16:44:22

swiftOC

2022-12-15 16:15:17

2021-10-26 15:15:00

蘋果 iOS 15 iPadOS 15

2021-06-22 07:15:41

蘋果iOS 15iPadOS 15

2015-08-27 09:46:09

swiftAFNetworkin

2014-07-02 09:47:06

SwiftCocoaPods

2013-11-29 10:39:43

2021-06-09 06:35:26

iOS 15 App 蘋果

2021-08-19 07:24:30

蘋果 iOS 15 Beta 6

2021-09-15 07:05:05

App Store 蘋果應用

2022-01-18 16:38:45

iOS蘋果系統

2011-12-16 09:28:15

蘋果移動芯片Intel

2021-09-15 11:53:11

iOS 15蘋果iPhone

2014-08-01 15:16:05

SwiftC語言

2021-06-08 15:26:44

蘋果iOS 14iOS 15

2022-01-15 23:01:23

iOS蘋果系統

2022-05-12 15:33:03

iOS蘋果個性化廣告

2021-09-10 10:50:24

iOS蘋果系統

2009-08-26 13:39:52

蘋果雪豹操作系統
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品伦精品一区二区三区视频 | 嫩草一区二区三区 | 亚洲黄色片免费观看 | 亚洲精品99 | 婷婷毛片| 日韩高清www | 亚洲人人 | 一本一道久久a久久精品综合蜜臀 | 麻豆国产精品777777在线 | 日韩精彩视频 | 91欧美| 国产精品99精品久久免费 | 色约约视频 | 欧美激情欧美激情在线五月 | 精品国产一区二区三区久久狼黑人 | 日韩国产精品一区二区三区 | 亚洲综合在线视频 | 欧美福利在线 | 亚洲综合在线一区二区 | 国产精品久久久久久久久久久久冷 | 2022国产精品 | 国产精品美女久久久久久免费 | 亚洲精品久久久久久一区二区 | 国产一区二区在线播放 | 日韩成人精品一区二区三区 | 国产农村妇女精品一二区 | 国产精品网址 | 国产农村妇女毛片精品久久麻豆 | 国产91精品久久久久久久网曝门 | 成人高潮片免费视频欧美 | 91xxx在线观看| 91社区在线观看高清 | 一级毛片免费视频 | 中文成人无字幕乱码精品 | 国产69久久精品成人看动漫 | 亚洲精品一区二区三区蜜桃久 | 欧美午夜视频 | 欧美一区视频 | 色婷婷综合久久久中字幕精品久久 | 国产人久久人人人人爽 | 亚洲一级视频在线 |