如何处理UnsafePointer <unmanaged <cfarray>?&gt; </unmanaged <cfarray>

时间:2014-08-04 17:10:04

标签: swift

如何调用以下功能:

func AXUIElementCopyAttributeNames(element: AXUIElement!, names: UnsafePointer<Unmanaged<CFArray>?>) -> AXError

我有一个AXUIElement(Ref)(它们是typealias&#39; ed),我想调用该函数来获取该元素可用的辅助功能属性名称。

1 个答案:

答案 0 :(得分:4)

我有点猜测(因为我没有使用辅助功能的经验 函数),但从函数声明它应该像这样工作:

let element: AXUIElementRef = ...

var ptr : Unmanaged<CFArray>? = nil
let error = AXUIElementCopyAttributeNames(element, &ptr)
if error == AXError(kAXErrorSuccess) {
    let names = ptr!.takeRetainedValue() // gives a CFArray
    // ...
}

Swift 3更新(未经测试):

let element: AXUIElement = ...

var cfArray: CFArray?
let error = AXUIElementCopyAttributeNames(element, &cfArray)
if error == .success, let names = cfArray as? [String] {
    // names is [String] array ...
}