objective-c - 使用 Objective-c typedef 快速关闭的可变参数

标签 objective-c swift closures

我有一个 objective c typedef,我想在我的 swift 闭包中使用:

    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 理解这个参数应该是可变的?

最佳答案

通常你可以像这样使用memory设置stop:

if !continueFlag { stop.memory = true }

或者,你可以这样做:

stop.memory = ObjCBool(!continueFlag)

关于objective-c - 使用 Objective-c typedef 快速关闭的可变参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34460845/

相关文章:

iphone - 如何在我们的应用程序中创建不时旋转的模拟时钟

ios - 两个 nsmutablearray 值在 ios 中与另一个值交换

ios - TableView ReloadData 函数不触发 cellForRowAtIndexPath Swift

ios - 索引(其中 :) method in swift is producing the wrong index

PHP 类型提示不起作用

objective-c - 在 Google Map API 中默认显示标记的标题

objective-c - 相同的函数,都被执行,一个声音都没有

ios - RxSwift rx_text 双向绑定(bind)崩溃

ios - 从子类加载 Spritekit 场景

javascript - for循环中的关闭/回调