为什么我不能在函数外声明处理程序?

Why can't I declare a handler outside of a function?

我可以在函数中声明这样的处理程序:

    @IBAction func handleActionSheetPressed(sender: UIButton) {
        let dismisHandler:(UIAlertAction)->Void = {(action:UIAlertAction) in
            self.dismissViewControllerAnimated(true , completion: nil)
    }

但是当我在函数外声明这个处理程序时,我得到了一个错误:

"Value of type 'NSObject -> () -> ViewController' has no member 'dismissViewControllerAnimated' ".

谁能告诉我如何在函数外声明这个处理程序?

您不能在 class 属性 的闭包声明中使用 self 实例,因为这个变量可以在另一个 class 上使用。 因此,您必须为要调用 dismiss 的视图控制器添加一个额外的参数。

var dismisHandler:(UIAlertAction, UIViewController)->Void = {(action:UIAlertAction, vc) in

        vc.dismissViewControllerAnimated(true, completion: nil)
    }