我使用的是Xcode6-beta2,但自从第一次公开测试以来,我就遇到了同样的问题.我的Obj-C UIViewController的Swift子类如下所示:
class SomeVC: UIViewController {
var c1: () -> () = {
println(self)
}
var c2: () -> () {
get {
return { println(self) }
}
}
var c3: () -> () {
return { println(self) }
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
c1()
c2()
c3()
}
}
当显示VC时,我看到以下几行打印出来:
(Function)
<_TtC12SwiftiOSTest6SomeVC: 0x10bf1ed10>
<_TtC12SwiftiOSTest6SomeVC: 0x10bf1ed10>
(c2和c3的不同之处在于,不必包含get{…}对于仅可获取的计算(computed)属性.)
因此,第一个闭包的self似乎指的是函数/闭包类型本身,而其他闭包的self则指的是视图控制器(正如我所预期的).
这是某个地方记录的东西(我读了Swift的书,没有发现任何东西),还是只是某种beta编译器错误,应该在某个地方存档?