我有这个方法,它接受一个标志,并根据它更新UI。
func foo(flag: Bool = Reachability.isReachable) {
if (flag) {
// Show an alert
} else {
// Do nothing
}
}
使用默认参数的布尔值实际上是可达性可达。
关闭网络连接后,标记的预期值为false
,但始终为true
。如果我直接检查它而不使用if Reachability.reachable
这样的默认参数,那么它会显示警报。
使用动态更改的默认参数是错误的吗?
答案 0 :(得分:0)
我正在尝试找一些官方文档,但我不能。 Swift默认参数值是静态绑定的,不是动态绑定的。看这篇文章
https://airspeedvelocity.net/2014/06/12/default-parameters-in-swift-are-statically-bound/
编辑:
我错了,看起来很动态。你可以用这个游乐场测试它:
//: Playground - noun: a place where people can play
import Cocoa
func myFunction(date: Date = Date()) {
print("Using date \(date)")
}
myFunction()
sleep(3)
myFunction()
等待3秒后你会看到日期发生变化,所以它在第二次通话时会发出新的Date
...也许你的可达性代码中有一个错误?