我在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 ++的一行中完成几乎可以做的事情,这是很多难看的代码。除了所有这些嵌套,还有其他选择吗?

最佳答案

除了所有这些嵌套,还有其他选择吗?


一般来说,可能不会。缓冲区指针不安全。因此,对于每个不安全的缓冲区指针,您需要一个受限的上下文,在该上下文中保证它始终可访问。那就是关闭。您有三个这样的指针,因此需要三个这样的上下文,它们是嵌套的。那就是闭包的巢。您可能会指出自己的出路,但这是不值得的。在任何情况下,旁观者都认为“难看”;您的代码对我来说看起来正常且令人愉快。

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

10-12 13:46