我有一个 :
var formVC:UIViewController!
我也试图有一个名为:
func formVC()->UIViewController{....}
我知道在OBJC中它可以工作,但是我没有在Swift中看到一种方法来做到这一点。有办法解决这个问题,还是我不了解Swift中明显的架构/概念更改?
提前致谢。
这在ObjC中是个坏主意,在Swift中是非法的。考虑以下一些情况:
class X { var value : Int = 0 func value() -> Int { return 1 } } let x = X()
什么是x.value在这种情况下?是Int还是它() -> Int?将类的方法视为闭包是合法且有用的。
x.value
Int
() -> Int
如果我们更加棘手,该怎么办:
class X { let value: () -> Int = { 2 } func value() -> Int { return 1 } } let x = X() let v = x.value() // ????
Swift应该使用该属性value然后调用它吗?还是应该调用该方法value()?闭包作为财产完全合法。
value
value()
ObjC中实际上存在相同的限制。您也无法创建与方法冲突的综合属性(如果它们具有不同的类型;如果它们具有相同的类型,则ObjC会默默地不合成访问器)。您在考虑Swift属性,就像它们等同于ObjC的ivars,但这是不对的。Swift的属性等同于ObjC的 属性 (即访问ivars的方法)。您无权访问Swift中的基础ivars。