我正在使用 Lottie(动画框架),我尝试使用的代表之一是希望我返回一个 Unmanaged<CGColor>!
这是定义:

color(forFrame currentFrame: CGFloat, startKeyframe: CGFloat, endKeyframe: CGFloat, interpolatedProgress: CGFloat, start startColor: CGColor!, end endColor: CGColor!, currentColor interpolatedColor: CGColor!) -> Unmanaged<CGColor>!

如果我只是尝试返回 UIColor.white.cgColor 我会收到一个错误消息
Cannot convert return expression of type 'CGColor' to return type 'Unmanaged<CGColor>!'
我已经尝试过查看他们的文档,但他们的示例仅显示如何使用它:
let colorBlock = LOTColorBlockCallback { (currentFrame, startKeyFrame, endKeyFrame, interpolatedProgress, startColor, endColor, interpolatedColor) -> Unmanaged<CGColor> in
    return aColor
}

那么我怎样才能返回正确的类型呢?

谢谢

最佳答案

您可以通过调用 UnmanagedpassRetained 静态函数来创建 passUnretained 实例,如下所示:
Unmanaged.passRetained(UIColor.white.cgColor)
但请记住,如果您决定使用 takeRetainedValue 或使用 passRetained() 函数,则应使用 takeUnretainedValue() 处理此变量的 future 使用(如果您将使用 passUnretained )。如果不这样做 - 你会出现内存泄漏或可能的崩溃。

关于ios - 我如何返回一个 Unmanaged<CGColor>!在 swift ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49013861/

10-11 14:33