gpt4 book ai didi

swift - 覆盖在 Swift 的父类(super class)扩展中声明的类变量

转载 作者:行者123 更新时间:2023-11-28 11:32:51 26 4
gpt4 key购买 nike

这是 Swift 5.0.1 或 Xcode 的错误吗?

这是在 Xcode 10.2.1 的 Playground 上。

代码是:

extension UIColor {
@objc class var myGolden: UIColor {
return self.init(red: 1.000, green: 0.894, blue: 0.541, alpha: 0.900)
}
}
print(UIColor.myGolden)

class MyUIColor: UIColor {
override class var myGolden: UIColor {
return super.init(red: 1.000, green: 0.894, blue: 0.541, alpha: 0.750)
}
}
print(MyUIColor.myGolden)

playground 没有为 MyUIColor 类指示任何错误

输出是:

UIExtendedSRGBColorSpace 1 0.894 0.541 0.9

libc++abi.dylib:以 NSException 类型的未捕获异常终止

运行时错误说:

error: Execution was interrupted, reason: signal SIGABRT. The process has been left at the point where it was interrupted, use "thread return -x" to return to the state before expression evaluation.

最佳答案

问题不是类变量重写,而是 self.initsuper.init 的不当使用。您应该按如下方式更改代码:

extension UIColor {
@objc class var myGolden: UIColor {
return UIColor(red: 1.000, green: 0.894, blue: 0.541, alpha: 0.900)
}
}
print(UIColor.myGolden)

class MyUIColor: UIColor {
override class var myGolden: UIColor {
return UIColor(red: 1.000, green: 0.894, blue: 0.541, alpha: 0.750)
}
}
print(MyUIColor.myGolden)

关于swift - 覆盖在 Swift 的父类(super class)扩展中声明的类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56360636/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com