open override var description:Swift 3中未调用的字符串

时间:2016-09-12 02:32:29

标签: getter uicolor swift3

我现在使用Xcode 8 GM(版本8.0(8A218a))和Swift 3,在我将Swift 2语法转换为Swift 3之后,我的repo是:https://github.com/yeahdongcn/UIColor-Hex-Swift/tree/Swift-3.0,我设置了两个断点在getter之后,我运行了测试,第一个没有被调用,但第二个debugDescription被调用。

open override var description: String {
    return self.hexString(true)
}

open override var debugDescription: String {
    return self.hexString(true)
}

我创建了一个同样适用的游乐场

//: Playground - noun: a place where people can play

import UIKit

extension UIColor {
    public func hexString(_ includeAlpha: Bool) -> String {
        var r: CGFloat = 0
        var g: CGFloat = 0
        var b: CGFloat = 0
        var a: CGFloat = 0
        self.getRed(&r, green: &g, blue: &b, alpha: &a)

        if (includeAlpha) {
            return String(format: "#%02X%02X%02X%02X", Int(r * 255), Int(g * 255), Int(b * 255), Int(a * 255))
        } else {
            return String(format: "#%02X%02X%02X", Int(r * 255), Int(g * 255), Int(b * 255))
        }
    }

    open override var description: String {
        return self.hexString(true)
    }

    open override var debugDescription: String {
        return self.hexString(true)
    }
}

let color = UIColor.yellow
color.description
color.debugDescription

enter image description here

1 个答案:

答案 0 :(得分:1)

您无法覆盖扩展程序中的方法。您需要使用子类。编译器应该抱怨。

它可能在Swift 2.x中有效,但这不是正确的行为。