swift - 嵌套 withUnsafeBytes 调用不可避免?

标签 swift

我在 Swift 中为数据操作方法编写了一些代码(从 Obj-C/C 代码桥接),该方法需要 3 个 UnsafeRawBufferPointer ,它看起来像这样

    data1.withUnsafeBytes({ (rawDataPtr1) -> Void in
        data2.withUnsafeBytes({ (rawDataPtr2) -> Void in
            data3.withUnsafeBytes({ (rawDataPtr3) -> Void in

                doTheThing(rawDataPtr1, rawDataPtr2, rawDataPtr3)

            })
        })
    })

在 Obj-C 或 C++ 中,用一行代码就能完成的事情需要用大量难看的代码来完成。除了所有这些嵌套之外,还有其他选择吗?

最佳答案

Is there any alternative to all this nesting?

一般来说,可能不会。缓冲区指针不安全。因此,对于每个不安全的缓冲区指针,您需要一个有限的上下文来保证它保持可访问性。这就是闭包的意义。您有三个这样的指针,因此您需要三个这样的嵌套上下文;这就是闭包的巢穴。也许你可以记下摆脱这种情况的方法,但这不值得付出努力。无论如何,“难看”是仁者见仁智者见智的。你的代码对我来说看起来很正常并且令人愉快。

关于swift - 嵌套 withUnsafeBytes 调用不可避免?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56634130/

相关文章:

ios - 基于 bool 值比较两个数组和匹配元素

ios - 使用 -> present(viewControllerToPresent : UIViewController, animated : true, completion: nil) 调用后 rootViewController 未加载

ios - Swift 2 中数组的扩展

ios - 在 SwiftUI App 中实现深色模式切换

比较两个可选数组的 Swift 错误

swift - 如何复制 UIImage?

ios - 如何按值传递引用类型?

ios - 属性字符串不适用于标签

ios - Swift WKWebView 未初始化并导致意外的 nil 错误

Swift Animation - 后面有圆圈的按钮