我在超类中定义了一个变量并尝试在子类中引用它,但是在实例成员上获取错误不能在类型上使用
class supClass: UIView { let defaultFontSize: CGFloat = 12.0 } class subClass: supClass { private func calcSomething(font: UIFont = UIFont.systemFontOfSize(defaultFontSize)) { //... Do something } }
它出什么问题了?非常感谢
在类范围上计算方法参数的默认值,
不是实例范围,如下例所示:
原文链接:https://www.f2er.com/swift/319457.html不是实例范围,如下例所示:
class MyClass { static var foo = "static foo" var foo = "instance foo" func calcSomething(x: String = foo) { print("x =",x) } } let obj = MyClass() obj.calcSomething() // x = static foo
如果没有静态var foo,它就不会编译.
适用于您的情况,这意味着您必须使用所使用的属性
作为默认值static:
class supClass: UIView { static let defaultFontSize: CGFloat = 12.0 // <--- add `static` here } class subClass: supClass { private func calcSomething(font: UIFont = UIFont.systemFontOfSize(defaultFontSize)) { //... Do something } }
(请注意,无论是否在中定义了属性,都与此问题无关同一个班级或超级班.)