我是swift的新手,我正在尝试使用具有参数类型UnsafeMutablePointer的ObjC函数。我阅读了很多关于使用UnsafeMutablePointer或UnsafeMutableRawPointer的帖子,但我仍然无法让它工作。功能是:
func AXUIElementCopyAttributeNames(_ element:AXUIElement,_ names:UnsafeMutablePointer) - > AXError
我甚至找到了确切功能的问题,但答案似乎在swift 3中不再起作用。以下是我尝试过的一些不起作用的事情。
var ptr : Unmanaged<CFArray>? = nil
AXUIElementCopyAttributeNames(element, &ptr)
var names:CFArray? = nil
AXUIElementCopyAttributeNames(element, UnsafeMutablePointer(names))
var names:CFArray? = nil
AXUIElementCopyAttributeNames(element, UnsafeMutablePointer<CFArray>(Unmanaged.passUnretained(names).toOpaque()))
另外,是否有一个很好的教程可以让我在Swift 3中使用ObjC函数?似乎在swift中仍然缺少许多api 非常感谢你!
答案 0 :(得分:0)
AXUIElementCopyAttributeNames
没有指针
非托管 CFArray
了:
let element: AXUIElement = ...
var cfArray: CFArray?
let error = AXUIElementCopyAttributeNames(element, &cfArray)
if error == .success, let names = cfArray as? [String] {
// names is [String] array ...
}