如何在运行时检测应用程序是否使用Swift?

4
我正在开发一个框架(objc),我需要检测应用程序是否使用Swift。无论应用程序是完全基于Swift还是Swift/objc混合,都不重要。
你有什么想法可以获取这些信息吗?我考虑过使用objc运行时,但我不知道如何实现。
非常感谢。
我不知道为什么我的先前问题已经关闭。但我会尝试更加专注:我需要获取有多少客户端集成了我的框架并使用Swift作为编程语言,因此我必须检测项目是否使用Swift。

2
首先,不,你几乎不可能检测到是否使用了Swift。iOS应用程序是编译的,而不是解释的。其次,即使你可以,你将如何获取这些信息?你计划在你的框架中添加某种功能(秘密地)在用户运行应用程序时向你的服务器发送数据吗? - DonMag
1
@DonMag 也许他的东西实际上是一个报告框架或者依赖于一个报告框架。发送所描述的数据应该不难,再加上所有其他使市场营销人员满意的数据点。 - Till
@DonMag 我只想收集一些统计数据。 - Alexander Zakatnov
@Till 确切地说 :) - Alexander Zakatnov
1个回答

4
请查看下面基于公共文档的可能方法,使用自iPhone2以来可用于所有现代iOS版本的 dyld API。并且 libswiftCore.dylib 始终存在于Swift中。
考虑到Swift可能在某些应用程序插件中,因此应该在您的框架API调用上定期调用以下函数(或至少直到第一个正结果)。
#import <mach-o/dyld.h>

BOOL isSwiftLoaded() {
    return NSVersionOfRunTimeLibrary("libswiftCore.dylib") != -1; 
            // -1 is documented indicator that library is not loaded
}

太棒了,这是个很好的解决方案!非常感谢!你能说一下你在哪里找到这个解决方案吗?我已经阅读了苹果的文档和许多其他文章,但我从未见过像你这样真正优秀的解决方案。 - Alexander Zakatnov
1
只有经验和良好的习惯,从C语言背景开始,就要先阅读API头文件/接口,甚至在查看文档之前。)) - Asperi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接