我有一个 :
var formVC:UIViewController!
我也想尝试一个名为的函数:
func formVC()->UIViewController{....}
我知道在OBJC中它有用,但我没有看到在Swift中这样做的方法.有没有办法解决这个问题,或者我不理解Swift中明显的架构/概念变化?
提前致谢.
这在ObjC中是一个坏主意,在Swift中它是非法的.考虑其中一些情况:
原文链接:/swift/319145.htmlclass X { var value : Int = 0 func value() -> Int { return 1 } } let x = X()
在这种情况下x.value是什么?是Int还是它() – >诠释?将类的方法视为闭包是合法且有用的.
如果我们更加棘手,并且这样做会怎样?
class X { let value: () -> Int = { 2 } func value() -> Int { return 1 } } let x = X() let v = x.value() // ????
Swift应该使用属性值然后调用它吗?或者它应该调用方法值()?闭包是完全合法的属性.
ObjC实际上存在相同的限制.您无法创建与方法冲突的合成属性(如果它们具有不同的类型;如果它们具有相同的时间,则ObjC将默默地不合成访问器).你正在考虑Swift属性,就像它们等同于ObjC的ivars,但那是不对的. Swift的属性等同于ObjC的属性(即访问ivars的方法).您无法访问Swift中的基础ivars.