我在 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/