【问题标题】:swift protocol func with @escaping callback带有@escaping 回调的快速协议函数
【发布时间】:2020-01-22 13:00:49
【问题描述】:

我创建了一个带有回调函数参数的函数定义的协议。 但是当我尝试在实现协议的类中使用回调时,我得到了错误:

关闭使用非转义参数'callBack'可能会允许它转义

该修复将 @escaping 标志添加到函数定义中,但随后不再确认协议中的函数定义。

这是我作为回调传递的函数:

private func handleSignUpRes(result:Bool, msg:String, uData:UserData){
    if(result == false && (currVC != nil)){
        Utilities.ShowAlert(title: "Error", msg: msg, vc: currVC!)
    }
    else if(result == true){

    }
}

【问题讨论】:

    标签: swift closures protocols


    【解决方案1】:

    你需要传入一个不会逃逸的闭包。

    转义闭包是有可能在函数返回后执行的闭包。

    重写你的闭包,确保函数返回后它不能返回值。

    很遗憾,没有看到闭包,我无法告诉你为什么闭包会逃逸。

    当您发布关闭时,我将编辑我的答案。

    【讨论】:

    • 我添加了代码。它没有什么特别之处。
    • 你知道什么是闭包吗?
    • 是的,但这不是传递回调函数的唯一方法吗?
    • 你是说你将一个函数传递给其他函数吗?
    • 那你就不能使用 Utilities.ShowAlert 因为那很可能会转义
    猜你喜欢
    • 2023-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多