电话

028-126520321

BOB半岛老版本:iOS 15 中采用了 Swift 和 SwiftUI

标签: 2024-06-24 

[[441823]] 在 2021 年 9 月份发布了 iOS 15BOB半岛老版本。 在上述文章中,我对 iOS 15 的预装应用程序进行了分析:

iOS 15 中究竟有多少个二进制文件BOB半岛平台?这些应用程序使用了什么编程语言进行开发?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应用程序就是一个例子,我在其中灵活运用Swift、SwiftUI、Objective-C和C等编程语言,以解决特定的开发问题。本文中,任何包含一行 Swift 代码的应用程序都将被认为采用了 Swift。您可能会发现到有关 Objective-C 和 C++ 的讨论,但可能会留意到缺少有关 Objective-C++ 的内容BOB半岛APP。无法准确地检测使用 Objective-C++ 构建的二进制文件的方法。这种二进制文件被认为是同时使用 Objective-C 和 C++ 的。 最终,你应该保持怀疑态度对待这个分析。我相信总体情况准确,但我的方法有限,因为我无法查看 iOS 源代码,只能依赖不够精确的编译产物。在iOS 15中,Swift和SwiftUI可能会是最引人注目的方面之一,统计显示苹果在iOS 15中使用Swift和SwiftUI的情况。让我们从这里开始吧!iOS 15 中包含了 114 个二进制文件,这些文件使用了 SwiftUI 技术,几乎是 iOS 14 的三倍。iOS 14 和 iOS 15 之间,包含至少一行 Swift 代码的二进制文件数量翻了一倍。从这可以看出,苹果继续逐步采用 Swift 来开发自己的内置应用程序。今年也是 SwiftUI 发展的重要一年。一些常见的应用现在似乎在 iOS 15 中开始采用 SwiftUI:

\n图书 \n地图 \n备忘录 \n天气 \n提醒 \n音乐 \n播客 \nFaceTime?(通话服务) 进行设置步骤吗?这些新的应用程序与之前使用 SwiftUI 的 5 个应用程序一起:快捷指令、翻译、电话和 AirPods 连接弹出窗口。“共享视图服务:是否锁定屏幕?”使用 SwiftUI 时,大多数其他二进制文件都是小部件或者全新的框架。以下是包含 114 个 SwiftUI 二进制文件的完整列表:

/Applications/AppSettings.app/AppSettings /Applications/AppStore.app/PlugIns/AppStoreWidgetsExtension.appex/AppStoreWidgetsExtension /Applications/FamilyControlsAuthenticationUI.app/FamilyControlsAuthenticationUI /Applications/FindMy.app/PlugIns/FindMyWidgetIntentsItems.appex/FindMyWidgetIntentsItems /Applications/FindMy.app/PlugIns/FindMyWidgetIntentsPeople.appex/FindMyWidgetIntentsPeople /Applications/FindMy.app/PlugIns/FindMyWidgetItems.appex/FindMyWidgetItems /Applications/FindMy.app/PlugIns/FindMyWidgetPeople.appex/FindMyWidgetPeople /Applications/FTMInternal-4.app/FTMInternal-4 /Applications/GameCenterWidgets.app/PlugIns/GCWidgets.appex/GCWidgets /Applications/InCallService.app/InCallService /Applications/PeopleViewService.app/PlugIns/PeopleWidget_iOSExtension.appex/PeopleWidget_iOSExtension /Applications/SleepWidgetContainer.app/PlugIns/SleepWidgetExtension.appex/SleepWidgetExtension /private/var/staged_system_apps/Books.app/Books /private/var/staged_system_apps/Maps.app/Maps /private/var/staged_system_apps/MobileMail.app/PlugIns/MailWidgetExtension.appex/MailWidgetExtension /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/Music.app/Frameworks/MusicApplication.framework/MusicApplication /private/var/staged_system_apps/Podcasts.app/Frameworks/PodcastsStoreUI.framework/PodcastsStoreUI /private/var/staged_system_apps/Shortcuts.app/PlugIns/QuickLookExtension.appex/QuickLookExtension /private/var/staged_system_apps/Tips.app/Tips /private/var/staged_system_apps/Weather.app/Weather /System/Library/Assistant/UIPlugins/SiriFindMyUIPlugin.siriUIBundle/SiriFindMyUIPlugin /System/Library/Frameworks/_CoreLocationUI_SwiftUI.framework/_CoreLocationUI_SwiftUI /System/Library/Frameworks/_MusicKit_SwiftUI.framework/_MusicKit_SwiftUI /System/Library/Frameworks/FamilyControls.framework/FamilyControls /System/Library/Frameworks/FamilyControls.framework/PlugIns/ActivityPickerExtension.appex/ActivityPickerExtension /System/Library/Health/FeedItemPlugins/Heart.healthplugin/Heart /System/Library/Health/FeedItemPlugins/Highlights.healthplugin/Highlights /System/Library/Health/FeedItemPlugins/MenstrualCyclesAppPlugin.healthplugin/MenstrualCyclesAppPlugin /System/Library/Health/FeedItemPlugins/SleepHealthAppPlugin.healthplugin/SleepHealthAppPlugin /System/Library/Health/FeedItemPlugins/Summaries.healthplugin/Summaries /System/Library/PreferenceBundles/BatteryUsageUI.bundle/BatteryUsageUI /System/Library/PreferenceBundles/CoreRoutineSettings.bundle/CoreRoutineSettings /System/Library/PreferenceBundles/FocusSettings.bundle/FocusSettings /System/Library/PrivateFrameworks/AccessibilitySharedUISupport.framework/AccessibilitySharedUISupport /System/Library/PrivateFrameworks/ActionKitUI.framework/ActionKitUI /System/Library/PrivateFrameworks/CommandAndControlUI.framework/CommandAndControlUI /System/Library/PrivateFrameworks/CoreChartSwift.framework/CoreChartSwift /System/Library/PrivateFrameworks/CoreSuggestionsUI.framework/CoreSuggestionsUI /System/Library/PrivateFrameworks/FocusSettingsUI.framework/FocusSettingsUI /System/Library/PrivateFrameworks/FocusUI.framework/FocusUI /System/Library/PrivateFramewo在 iOS 15 中,我们能找到多少个二进制文件的数量? iOS 15 一共包含了4738个二进制文件,比iOS 14中的4173个多。iOS 15包含4738个二进制文件,比iOS 14的4173个多。其中有565个是新增的二进制文件。

二进制文件数量BOB半岛官方

iOS竟在不同版本间使用的编程语言

可以通过研究iPhone OS 1.0至iOS 15的所有主要iOS版本看出。请注意,同一个二进制文件可以被多次计算,因此,这幅图中的二进制数据总和将会超过二进制文件总数:在 iOS 15 所有二进制文件中,使用各种编程语言的情况如下:89% 使用了 Objective-C,17% 使用了 C++,13% 使用了 Swift,8% 完全用 C,2% 使用了 SwiftUI。\n从这些数据中我们可以得出什么结论?Objective-C 仍然是 iOS 的核心,不会很快被淘汰。 苹果公司对于 Swift 编程语言的采用速度比以往任何时候都更快。去年,Swift 的流行度超过了C。今年,Swift 正在更接近 C++。 去年并未引起太多关注的 SwiftUI,如今在苹果公司似乎得到了更广泛的应用,甚至在旗舰应用中也是如此。在当今时代,C++和C语言仍然扮演着重要角色。这些编程语言通常用于处理与音频、视频、电话、网络和其他底层框架相关的二进制数据。以下是不同编程语言发展历程的另一种表达:

iOS 15 中采用了 Swift 和 SwiftUI

编程语言的发展
初始资料
若需要深入分析,可在我为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。如前所述,该方法显然存在一些局限性,虽然我认为整体情况是准确的,但无法保证结果完全准确。如果您觉得有任何遗漏,请通过 Twitter 联系我。

这段文字翻译自:苹果在 iOS 15 中使用了Swift和SwiftUI。

参考资料如下:

[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/

iOS 15 中采用了 Swift 和 SwiftUI

[3]Clutters 应用程序:

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

 


BOB半岛入口 BOB半岛下载

推荐新闻