【问题标题】:Mutable parameters on swift closure using Objective-c typedef使用 Objective-c typedef 快速关闭的可变参数
【发布时间】:2015-12-25 07:18:14
【问题描述】:

我有一个目标 c typedef 我想在我的快速关闭中使用:

    typedef void (^SBJson4ValueBlock)(id item, BOOL* stop);

我的关闭很好,除非我想设置“停止”。

    let parseJsonBlock: SBJson4ValueBlock = {
        item, stop in

        let continueFlag = doStuff(item)
        stop = !continueFlag
    }

Stop 在objective-c 版本中显然是可变的,因为它是通过引用传递的……但我得到“无法赋值:'stop' 是'let' 常量”。我怎样才能让 swift 理解这个参数应该是可变的?

【问题讨论】:

    标签: objective-c swift closures


    【解决方案1】:

    一般你可以像这样使用memory设置stop

    if !continueFlag { stop.memory = true }
    

    或者,你可以这样做:

    stop.memory = ObjCBool(!continueFlag)
    

    【讨论】:

    • 我不得不使用 ... stop.memory = ObjCBool​​(!continueFlag)。如果您可以更新您的答案,我会将其标记为正确。
    • 相应地修改了答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    相关资源
    最近更新 更多