将Swift字典转换为CFD字典
将Swift 3中的字典转换为CFDictionary的正确方法是什么?这样写合法吗将Swift字典转换为CFD字典,swift,swift3,cfdictionary,Swift,Swift3,Cfdictionary,将Swift 3中的字典转换为CFDictionary的正确方法是什么?这样写合法吗 var dictionary:Dictionary<NSString, Int> = [:] 是的,你能做到。您的解决方案将起作用,您也可以这样做 var dictionary = [ key:value ] as CFDictionary 您可以从中进一步引用“是”,否则编译器会抱怨。@DeepakSharma您试过吗?@HarvantS。某些CoreFoundation函数需要
var dictionary:Dictionary<NSString, Int> = [:]
是的,你能做到。您的解决方案将起作用,您也可以这样做
var dictionary = [
key:value
] as CFDictionary
您可以从中进一步引用“是”,否则编译器会抱怨。@DeepakSharma您试过吗?@HarvantS。某些CoreFoundation函数需要CF类型,因此您别无选择。这座桥铸得很好,你当然可以试试。只需写3行代码,测试就完成了。@rmaddy尝试查看它是否给出正确的输出并不能保证它始终工作并且符合标准。iOS中有数千个这样的例子,其中代码可以工作,但从来都不是文档的一部分,因此永远无法依赖。最终,许多这样的代码段在iOS更新中被破坏,这让开发人员感到疑惑。问题是,由于编译器不管理CF类型,是否仍需要在字典中调用
CFRelease
?您可以使用CFRelease,但不建议在Swift中使用。Apple提供了两种方法TakeUnrepainedValue()和takeRetainedValue(),您可以通过它们将非托管对象转换为托管对象。您可以使用此方法将非托管即CF对象转换为托管对象,其内存将由swift管理。要了解更多信息,请阅读以下内容:
var dictionary = [
key:value
] as CFDictionary