接受函数的回调作为参数

Posted

技术标签:

【中文标题】接受函数的回调作为参数【英文标题】:Accepting a callback to a function as param 【发布时间】:2016-02-10 08:13:11 【问题描述】:

我正在使用 SnapKit,我试图将闭包作为参数传递给我的函数,该函数调用如下所示的 snp_makeConstaints,

func drawView(view: UIView, callback: (() -> Void)!) 
    self.addSubview(view)
    view.snp_makeConstraints(closure: callback)

我收到以下错误,

../example.swift:57:43: Cannot convert value of type '(() -> Void)!' to expected argument type '@noescape (make: ConstraintMaker) -> Void'

因此我添加了(make: ConstaintMaker) -> Void

导致以下错误, Use of undeclared type 'ConstraintMaker'

我不明白@noescape 是什么以及为什么说ConstraintMaker 未声明。

【问题讨论】:

因为 snp_makeConstraints 期望 (make: ConstraintMaker) -> Void 而你试图通过 () -> Void? @sliwinski.lukas 当我添加 (make: ConstraintMaker) 时,它显示以下错误,Use of undeclared type 'ConstraintMaker' 你必须导入一些模块。检查 SnapKit 文档是哪一个。 我已经包含了模块,我也可以直接使用它,但不能作为回调传递给我的方法。 @sliwinski.lukas 糟糕,我已将模块包含在主文件中,但未包含在我编写函数的文件中。 【参考方案1】:

在您遇到问题的 swift 文件顶部添加import SnapKit

【讨论】:

以上是关于接受函数的回调作为参数的主要内容,如果未能解决你的问题,请参考以下文章

如何编写一个接受回调作为参数的 jquery 函数

将额外的参数传递给回调函数

解决回调地狱问题

基于PROMISE解决回调地狱问题

如何向函数回调添加额外参数

将“void”作为函数参数传递