Objective-C依然占C位,Swift和SwiftUI在iOS 15中的使用情况

作者 | Alexandre Colucci译者 | 弯月出品 | CSDN(ID:CSDNnews)iOS 15 已经发布几个月了,在本文中,我们来分析一下 iOS 15 的内置应用,看看 iOS 15 中有多少个二进制文件?每个应用都是用什么语言开发的?有多少应用是用 Swift 编写的?苹果有没有在内置应用中使用 SwiftUI?Objective-C依然占C位,Swift和SwiftUI在iOS 15中的使用情况

Objective-C依然占C位,Swift和SwiftUI在iOS 15中的使用情况

方法论 本文使用的工具和方法论在之前的文章中介绍过。如果你有兴趣,可以参考以下两篇文章: 的源代码,分析结果不一定准确,所以方法也有局限性。Objective-C依然占C位,Swift和SwiftUI在iOS 15中的使用情况

iOS15 中 Swift 和 SwiftUI 的使用情况 可能很多人很感兴趣 iOS 15 中 Swift 和SwiftUI 的使用情况。下面我们就来一起看看吧。iOS15 中共计有 114 个二进制文件使用了 SwiftUI,几乎是 iOS 14 的三倍。相应地,iOS 15 中至少包含一行 Swift 代码的二进制文件也是 iOS 14 的两倍:Objective-C依然占C位,Swift和SwiftUI在iOS 15中的使用情况

可见,苹果一直在内置应用中逐步采用 Swift。今年 SwiftUI 的采用率也呈现大幅度增长。iOS 15 中使用了 SwiftUI 的知名应用包括:图书地图便笺天气音乐提示播客FaceTime通话(InCallService)设置下面这些新应用也使用了 SwiftUI:翻译快捷方式电话AirPods连接对话框(SharingViewService)锁屏界面(SleepLockScreen)其他使用了 SwiftUI 的二进制文件基本上都是小窗体或新的框架。下面是使用了 SwiftUI 的114个二进制文件:/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/PrivateFrameworks/HealthExperienceUI.framework/HealthExperienceUI/System/Library/PrivateFrameworks/HealthRecordsUI.framework/HealthRecordsUI/System/Library/PrivateFrameworks/HealthVisualization.framework/HealthVisualization/System/Library/PrivateFrameworks/HearingUI.framework/HearingUI/System/Library/PrivateFrameworks/MediaFoundation.framework/MediaFoundation/System/Library/PrivateFrameworks/MessagesSupport.framework/MessagesSupport/System/Library/PrivateFrameworks/MLKit.framework/MLKit/System/Library/PrivateFrameworks/MLKit.framework/PlugIns/com.apple.MLKit.MLModelPreview.appex/com.apple.MLKit.MLModelPreview/System/Library/PrivateFrameworks/MLKit.framework/PlugIns/com.apple.MLKit.MLPackagePreview.appex/com.apple.MLKit.MLPackagePreview/System/Library/PrivateFrameworks/NotesUI.framework/NotesUI/System/Library/PrivateFrameworks/PaymentUI.framework/PaymentUI/System/Library/PrivateFrameworks/PeopleUI.framework/PeopleUI/System/Library/PrivateFrameworks/PreviewsInjection.framework/PreviewsInjection/System/Library/PrivateFrameworks/PreviewsMessaging.framework/PreviewsMessaging/System/Library/PrivateFrameworks/ScreenTimeUICore.framework/ScreenTimeUICore/System/Library/PrivateFrameworks/SleepHealthUI.framework/SleepHealthUI/System/Library/PrivateFrameworks/SleepWidgetUI.framework/SleepWidgetUI/System/Library/PrivateFrameworks/SnippetUI.framework/SnippetUI/System/Library/PrivateFrameworks/TipKit.framework/TipKit/System/Library/PrivateFrameworks/TranslationUI.framework/TranslationUI/System/Library/PrivateFrameworks/TranslationUIServices.framework/PlugIns/TranslationUIService.appex/TranslationUIService/System/Library/PrivateFrameworks/VideosUI.framework/VideosUI/System/Library/PrivateFrameworks/WeatherUI.framework/WeatherUI/System/Library/PrivateFrameworks/WorkflowUI.framework/WorkflowUI/System/Library/Snippets/UIPlugins/AudioUIPlugin.bundle/AudioUIPlugin/System/Library/Snippets/UIPlugins/SiriVideoUIPlugin.bundle/SiriVideoUIPlugin/System/Library/Snippets/UIPlugins/SystemPlugin.bundle/SystemPlugin/usr/lib/swift/libswiftExtensionKit.dylib/usr/libexec/proximitycontroldObjective-C依然占C位,Swift和SwiftUI在iOS 15中的使用情况

二进制文件总数 iOS15 中有多少个二进制文件?iOS 15 有 4738 个二进制文件,比 iOS 14 多了565个, iOS14 有 4173个。Objective-C依然占C位,Swift和SwiftUI在iOS 15中的使用情况

Objective-C依然占C位,Swift和SwiftUI在iOS 15中的使用情况

编程语言的变化 在分析了 iPhone OS 1.0 到 iOS 15 的所有主要版本后,我们可以看到IOS 使用的编程语言的发展历程。同样,注意这里同一个二进制文件可能被统计多次,因此本图中的二进制文件总数多于上面:Objective-C依然占C位,Swift和SwiftUI在iOS 15中的使用情况

在 iOS 15 的所有二进制文件中,89%使用了Objective-C17%使用了 C++13%使用了 Swift8%完全使用 C编写2%使用了SwiftUI从这些数据可以得出什么结论?Objective-C 依然是 iOS 的核心,短时间内不会消失。苹果采用 Swift的进度大大加快了。去年,Swift 超过了 C,今年已经接近 C++。SwiftUI 几乎接近于零,但今年苹果似乎在更广的范围内采用了 SwiftUI,包括旗舰应用。C++ 和 C 依然扮演了重要角色。这些语言通常被涉及到音频、视频、电话、Web的应用和其他底层框架采用。下图展示了每种编程语言的发展:Objective-C依然占C位,Swift和SwiftUI在iOS 15中的使用情况

Objective-C依然占C位,Swift和SwiftUI在iOS 15中的使用情况

原始数据 如果想进一步分析,则可以去原文网站上下载从 iPhone OS 1.0 到 iOS 15.0 的所有主要版本的原始数据:/Objective-C依然占C位,Swift和SwiftUI在iOS 15中的使用情况

结论即使我们没有 iOS 的源代码,也可以确定 iOS 中应用程序使用的语言,进而统计 iPhone OS 1.0到 iOS 15 编程语言的发展情况。可以看出,苹果在持续采用 Swift:iOS 15 中采用Swift 的内置应用是 iOS 14 的两倍。现在大约有13% 的二进制文件使用了 Swift。此外,从今年开始,有几款旗舰应用也开始使用 SwiftUI 了。如前所述,这种方法有明显的局限性,尽管我相信大方向是正确的,但无法保证结果百分之百准确。参考链接:/Objective-C依然占C位,Swift和SwiftUI在iOS 15中的使用情况

Objective-C依然占C位,Swift和SwiftUI在iOS 15中的使用情况

你可能想看:
分享给朋友: