在Swift 1.2中,我有一个带有以下签名的C函数:
__nonnull CFArrayRef FDCreateSupportedAudioFileExtensions() CF_RETURNS_RETAINED;
我知道这个函数返回一个CFStringRef
个实例的数组,所以我从Swift这样调用它:
let supportedAudioTypes = FDCreateSupportedAudioFileExtensions() as! [String]
一切都按预期工作。但是,在Swift 2中,由于强制转换(EXC_BAD_INSTRUCTION
),此代码在运行时失败。我能够解决以下问题:
let supportedAudioTypes = FDCreateSupportedAudioFileExtensions() as NSArray as! [String]
我不确定从Swift 1.2到2.0的变化。这是当前版本的Swift中的一个错误还是我错过了什么?我读过的所有内容都暗示CFTypes是免费的,与他们的Swift同行联系在一起,所以我不确定为什么以前工作的东西现在都失败了。