这给了我一个错误:
NSNotificationCenter.defaultCenter().addObserverForName(MyNotification, object: nil, queue: nil) { (notification: NSNotification?) in
self.variable?.myMethod()
}
但这很好:
NSNotificationCenter.defaultCenter().addObserverForName(MyNotification, object: nil, queue: nil) { (notification: NSNotification?) in
println()
self.variable?.myMethod()
}
知道为什么以及如何解决它?
谢谢。
答案 0 :(得分:1)
你所看到的是“隐性回报”。 Swift假设如果你有一个表达式作为闭包的实现,那么它从闭包返回该行代码的结果。这是Apple Swift Programming Language文本中记录的优化(请查看Closures intro中的最后一段/项目符号列表)。
因此,如果你不想隐含地从第一个语句返回,你需要有一个return语句。
所以你的代码应该是这样的:
NSNotificationCenter.defaultCenter().addObserverForName(MyNotification, object: nil, queue: nil) { (notification: NSNotification?) in
self.variable?.myMethod()
return
}