Swift   发布时间:2022-04-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了解决Swift 3中的非转义闭包问题大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个扩展数组的形式:

extension Array
{
    private func someFunction(someClosure: (() -> int)?)
    {
        // Do Something
    }

    func someOtherFunction(someOtherClosure: () -> int)
    {
        someFunction(someClosure: someOtherClosurE)
    }
}

但我收到@L_696_2@:将非转义参数’someOtherClosure’传递给函数,期望@escaping闭包.@H_607_10@

两个闭包确实是非转义(认情况下),并且明确地将@noescape添加到someFunction会产生一个警告,指示这是Swift 3.1中的认值.@H_607_10@

知道我为什么会收到这个@L_696_2@吗?@H_607_10@

– 更新 –
附上截图:

解决Swift 3中的非转义闭包问题

@H_607_10@

解决方法

如前所述,可选闭包正在逃避.另外一个补充:

Swift 3.1有一个withoutActuallyEscaping辅助函数,在这里很有用.它标记一个闭包,只是为了在传递的闭包内使用它,因此您不必将转义属性公开给函数签名.@H_607_10@

可以像这样使用:@H_607_10@

extension Array {

    private func someFunction(someClosure: (() -> int)?) {
        someClosure?()
    }

    func someOtherFunction(someOtherClosure: () -> int) {
        withoutActuallyEscaping(someOtherClosurE) {
            someFunction(someClosure: $0)
        }
    }
}


let x = [1,2,3]

x@L_425_20@meOtherFunction(someOtherClosure: { return 1 })

希望这有用!@H_607_10@

大佬总结

以上是大佬教程为你收集整理的解决Swift 3中的非转义闭包问题全部内容,希望文章能够帮你解决解决Swift 3中的非转义闭包问题所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。