我在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 ++的一行中完成几乎可以完成的工作,这是很多难看的代码。除了所有这些嵌套,还有其他选择吗?
答案 0 :(得分:0)
所有这些嵌套还有其他选择吗?
通常,可能不是。缓冲区指针不安全。因此,对于每个不安全的缓冲区指针,您需要一个受限的上下文,在该上下文中保证它始终可访问。那就是关闭。您有三个这样的指针,因此需要三个这样的上下文,嵌套;这就是闭包的巢。也许您可以指出自己的出路,但这是不值得的。在任何情况下,旁观者都认为“难看”;您的代码对我来说看起来正常且令人愉快。