Swift 逃逸闭包

一般在定义网络请求框架时,会声明成功闭包,失败闭包。用来回调返回的数据给调用者。

成功闭包,失败闭包当然是作为请求方法的参数,这时候会报错,因为这种闭包必须声明为逃逸闭包。

也就是在闭包类型前加 @escaping

func httpRequestSendDeviceTokenWithOld(oldToken : String,
                                           platformType : NSNumber,
                                              succed : @escaping HttpRequestCompleteBlock,
                                              faild : @escaping HttpRequestFaildCompleteBlock) {
        
        WLFNetWorkManager.sharedInstance.post(USER_REGISTER_URL, parameters: ["oldToken":oldToken,
                                                                              "deviceToken":"",
                                                                              "platformType":2,
                                                                              "userId":0], progress: { (progress) in
            
        }, success: { (task, responseObject) in
            
            succed(responseObject!)
            
        }) { (task, error) in
            
            faild(error)
        }
    }
当一个闭包作为参数传到一个函数中,但是这个闭包在函数返回之后才被执行,我们称该闭包从函数中逃逸. 当你定义接受闭包作为参数的函数时,你可以在参数名之前标注 @escaping,用来指明这个闭包是允许“逃逸”出这个函数的

作者:li_礼光
链接:https://www.jianshu.com/p/5701f4e8eb29
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

posted @ 2020-05-11 15:39  liuw_flexi  阅读(1148)  评论(0编辑  收藏  举报