通过此函数的所有路径都会调用自身
All paths through this function will call itself
我通过以下两种方式为 UIColor
创建了一个 convenience init
:
1.
extension UIColor {
convenience init(_ red: CGFloat, _ green: CGFloat, _ blue: CGFloat, alpha: CGFloat = 1) {
self.init(red: red/255, green: green/255, blue: blue/255, alpha: alpha)
}
}
2.
extension UIColor {
convenience init(_ red: CGFloat, _ green: CGFloat, _ blue: CGFloat, alpha: CGFloat = 1) {
self.init(red/255, green/255, blue/255, alpha: alpha)
}
}
对于第二种方式,我收到警告:"All paths through this function will call itself"。
所以我无法理解为什么会出现第二种方式的警告?
在第二个 init
中,您正在对同一个 init(_:_:_:alpha:)
.
进行 递归调用
self.init(red/255, green/255, blue/255, alpha: alpha)
以上语句没有调用UIColor
的指定初始化器。它会反复调用自己。
相反,您必须像第一种情况那样调用 init(red:green:blue:alpha:)
。
我通过以下两种方式为 UIColor
创建了一个 convenience init
:
1.
extension UIColor {
convenience init(_ red: CGFloat, _ green: CGFloat, _ blue: CGFloat, alpha: CGFloat = 1) {
self.init(red: red/255, green: green/255, blue: blue/255, alpha: alpha)
}
}
2.
extension UIColor {
convenience init(_ red: CGFloat, _ green: CGFloat, _ blue: CGFloat, alpha: CGFloat = 1) {
self.init(red/255, green/255, blue/255, alpha: alpha)
}
}
对于第二种方式,我收到警告:"All paths through this function will call itself"。 所以我无法理解为什么会出现第二种方式的警告?
在第二个 init
中,您正在对同一个 init(_:_:_:alpha:)
.
self.init(red/255, green/255, blue/255, alpha: alpha)
以上语句没有调用UIColor
的指定初始化器。它会反复调用自己。
相反,您必须像第一种情况那样调用 init(red:green:blue:alpha:)
。