swift - 嵌套 withUnsafeBytes 调用不可避免?
问题描述
我在 Swift 中为需要 3 秒的数据操作方法(从 Obj-C / C 代码桥接)编写了一些代码,UnsafeRawBufferPointer
它看起来像这样
data1.withUnsafeBytes({ (rawDataPtr1) -> Void in
data2.withUnsafeBytes({ (rawDataPtr2) -> Void in
data3.withUnsafeBytes({ (rawDataPtr3) -> Void in
doTheThing(rawDataPtr1, rawDataPtr2, rawDataPtr3)
})
})
})
在 Obj-C 或 C++ 中,你可以用一行代码完成很多难看的代码。所有这些嵌套有什么替代方法吗?
解决方案
所有这些嵌套有什么替代方法吗?
一般来说,可能不会。缓冲区指针不安全。因此,对于每个不安全的缓冲区指针,您都需要一个受限的上下文,以保证它可以保持可访问性。这就是闭包。你有三个这样的指针,所以你需要三个这样的上下文,嵌套;这就是闭包的巢。也许你可以写出你的出路,但这不值得付出努力。无论如何,“难看”在旁观者的脑海中;你的代码对我来说看起来很正常和愉快。
推荐阅读
- ruby - 对 rb-inotify 的更新是否只是破坏了 Ruby 1.x 上的指南针?
- asp.net - Google Compute Engine auto scaling aspnet
- c - The C programming language Second Edition practice 1-9
- c - Format specifies type 'char *' but the argument has type 'int', any mistake I made here?
- tomcat - AWS - 在 EC2 上安装 Tomcat 8
- spring-webflux - 由于我的基本 URI 不固定,在 Webflux 中一次又一次地创建 Webclient 是否明智?
- mongodb - MongoDB不能以fork开头?
- python - matplotlib - xtick 标签位置在第二个轴上不可设置
- git - Github Pull Request:没有什么可比较的
- jquery - Jquery UI Sortable 获取父子位置