问题描述
我正在使用Mono将一些C#代码集成到Swift应用程序中。这工作正常,但我想使该集成成为可选。因此,我将Xcode中的Mono.framework链接更改为可选,并确认这是链接器命令行中的结果。
现在,我的问题是如何检查Mono.framework是否真正可用?我只看到了检查Objective-C类的示例,但没有一个涉及标准C函数可用性的示例。
解决方法
我通过使用一些C代码找到了解决方案:
extern void mono_jit_init (const char *file) __attribute__((weak_import));
int isMonoAvailable(void)
{
return mono_jit_init != NULL;
}
以及桥接头中包含的该函数的头:
extern int isMonoAvailable(void);
完成上述操作后,我可以从Swift打电话来检查可用性:
if isMonoAvailable() {
// do something with Mono
}