问一些其他函数调用一个函数,但谁提供了参数值?

时间:2017-02-01 19:30:31

标签: swift function

代码很简单。视图中有一个按钮,在用户点击按钮的运行时间内,该按钮将向下移动20个点。

viewController有一个IBOutlet和一个IBAction,它们都连接到界面构建器中的按钮

以下是viewControleller的代码

class viewController : UIViewController {

    @IBOutlet weak var myButton: UIButton!

    @IBAction func moveMyButton(_ sender: Any) {

        func whatToAnimate() {
            self.myButton.frame.origin.y += 20
        }

        func whatToDoLater(finished: Bool){
            print("finished: \(finished)") //who passed the "true" value to the finished variable
        }

        UIView.animate(withDuration: 0.4, 
                    animations: whatToAnimate, 
                    completion: whatToDoLater)
    }

}

在运行时调用 动画 函数时,函数 whatToDoLater() - > void 作为参数传递到 animate 方法中。

字符串"完成:true"用户点击按钮时在控制台中打印

问题

谁传递了布尔值" true"到whatToDoLater函数的参数完成?我想我没那样做。它背后的机制是什么?

感谢您的时间

1 个答案:

答案 0 :(得分:1)

UIView animate方法传递参数,因为它调用完成处理程序。

使用完成处理程序可以看到此模式。无论实际调用什么,完成处理程序还负责将正确的参数值传递给完成处理程序。