在Swift 3中,如何区分实例成员和具有相同名称的类成员?现在通常可以正常工作的东西现在会在Xcode 8 beta 5中产生错误:
“静态成员'textColor'不能用于类型为UITag的实例”
public class UITag : UILabel {
static var textColor = UIColor.white
override public init(frame: CGRect) {
super.init(frame: frame)
textColor = UITag.textColor /* error: static member cannot be used on instance of type UITag */
text = " not set "
}
}
最佳答案
这是一个奇怪的错误,我们可以讨论一下是否是编译器错误,实际上允许它用静态变量遮盖非静态变量,但是请注意,拥有两个具有相同名称的属性绝对是不好的代码,一个静态和非静态的,因为最后一个会遮盖前一个。 defaultTextColor
可能是一个更好的名称。
一个简单的解决方法是使用:
super.textColor = ...
关于ios - 在Swift 3中将类与具有相同名称的实例成员区分开,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39020146/