首页 > 解决方案 > 带有@escaping 回调的快速协议函数

问题描述

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

关闭使用非转义参数“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){

    }
}

标签: swiftclosuresprotocols

解决方案


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

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

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

不幸的是,没有看到闭包,我无法告诉你为什么闭包会逃逸。

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


推荐阅读