swift3 - swift 3 如何使用CFArrayCreate

标签 swift3 unsafe-pointers unsafemutablepointer

我想从数组创建 CFArray

以前在 Swift 2 中,我可以这样做:

let array = [0, 1, 2, 3]
let arrayPointer = UnsafeMutablePointer<UnsafePointer<Void>>(array)
let cfArray = CFArrayCreate(kCFAllocatorDefault, arrayPointer, array.count, nil)

现在在 Swift 3 CFArrayCreate 中期待 UnsafeMutablePointer<UnsafeRawPointer?>!作为第二个参数

我尝试这样做的一种方法是这样的:

let array: [Int] = [0, 1, 2, 3]
var rawPointer: UnsafeRawPointer? = UnsafeRawPointer(array)
let cfArray = withUnsafeMutablePointer(to: &rawPointer) { ppArray in
    CFArrayCreate(kCFAllocatorDefault, ppArray, array.count, nil)
}

但是,这将创建 CFArray,其元素为 [rawPointer、垃圾、垃圾、垃圾的值],而不是 [0, 1, 2, 3]

我该怎么做这个UnsafeMutablePointer<UnsafeRawPointer?>!参数超出数组?

最佳答案

你可以做到

let cfArray = array as CFArray

关于swift3 - swift 3 如何使用CFArrayCreate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39712478/

相关文章:

ios - 如何使用userDefaults在Swift3中保存UISegmentedControl的状态

ios - 自定义 uitableViewCell

pointers - 在 Swift 中,如何确定两个 UnsafePointer 是否引用同一内存?

swift - 将 nil 作为 UnsafePointer<UInt8> 传递

Swift 不安全可变指针 : Must I call deinitialize before deallocate?

ios - 使用 attributedText 在自定义 UILabel 中定位字符坐标

ios - 将数据传递给子容器 View

swift - 'init 不可用 : use 'withMemoryRebound(to:capacity:_)' to temporarily view memory as another layout-compatible type

Swift 语法 : UnsafeMutablePointers in CGPDFDocument. getVersion