【发布时间】:2018-08-01 13:52:20
【问题描述】:
我在我的 Swift 项目中使用了一个 C 库,其中一个函数需要 UnsafePointer<UnsafePointer<UInt8>?>! 作为我应该传递数据的输入输出参数。但问题是我有这个UnsafeMutablePointer<UnsafeMutablePointer<UInt8>?>!类型的数据。
我的问题是 - 在 Swift 3 中将 UnsafeMutablePointer 转换为 UnsafePointer 的最有效和最简单的方法是什么?这些指针在“纸面上”并没有太大的不同,它们与技术背景也不应该有太大的不同,但我找不到关于该主题的有价值的信息。
任何帮助将不胜感激。谢谢
【问题讨论】:
-
该函数是如何在 C 中声明的?
-
也许使用
unsafeBitCast? -
@MartinR 您好,感谢您的回答!我认为这并不重要,但在这里:
int av_image_alloc(uint8_t *pointers[4], int linesizes[4], int w, int h, enum AVPixelFormat pix_fmt, int align); -
@Cristik 你好!我不知道这是否是一个有效的解决方案,但感谢您的建议!
-
@EugeneAlexeev 它的效率为 100%,因为它在
O(1)中运行,但不确定编译器或运行时是否会让您正确转换。顾名思义,它是不安全的,因为如果使用不当,最终可能会出现意想不到的结果。
标签: swift pointers swift3 unsafe-pointers unsafemutablepointer