1

谁能解释一下,这段代码是如何工作的

private func viewWillTransition(completion:(() -> Void)?)
{
    if completion != nil
    {
        completion!()
    }
}
4

1 回答 1

2

这是在 Swift中实现回调的基本方案。

该函数接受completiontype的参数() -> Void)?,意思是“一个不带参数且不返回值的可选闭包”。

closure里面的代码测试for的可选值nil。如果不是nil,代码用 解包!,并进行调用。

在 Swift 中实现这一点的一种更惯用的方法是使用if let构造:

private func viewWillTransition(completion:(() -> Void)?) {
    if let nonEmptyCompletion = completion  {
        nonEmptyCompletion()
    }
}
于 2016-09-22T10:01:56.497 回答