swift 4 AXValueGetValue可选值为nil,但调试器显示一个值

时间:2018-03-14 18:52:33

标签: swift macos

如何从此指针中获取值? AXValueGetValue将CGRect对象复制到我的指针中。调试器显示指针引用具有我想要的值的对象但无法转换为预期的CGRect类型。这是一个元组吗?如果是这样,我如何从该指针中获取Tuple值?

Debugger shows code in questions and output

1 个答案:

答案 0 :(得分:1)

解决方法:我删除了泛型函数copyAXValue<T>并直接实例化了一个特定的inout变量,而不是从UnsafeMutablePointer<T>分配一个。

class AXValueGetters {

    class func asCGRect(value: AXValue) -> CGRect {
        var val = CGRect.zero
        AXValueGetValue(value, AXValueType.cgRect, &val)
        return val
    }

    class func asCGPoint(value: AXValue) -> CGPoint {
        var val = CGPoint.zero
        AXValueGetValue(value, AXValueType.cgPoint, &val)
        return val
    }

    class func asCFRange(value: AXValue) -> CFRange {
        var val = CFRange(location: 0, length: 0)
        AXValueGetValue(value, AXValueType.cfRange, &val)
        return val
    }

    class func asCGSize(value: AXValue) -> CGSize {
        var val = CGSize.zero
        AXValueGetValue(value, AXValueType.cgSize, &val)
        return val
    }

}