gpt4 book ai didi

swift - 不安全可变指针 : What's the risk?

转载 作者:搜寻专家 更新时间:2023-11-01 06:05:51 25 4
gpt4 key购买 nike

我在 Objective-C 库的回调中收到其中一个:UnsafeMutablePointer<UInt8>

我能够解析它。我也可以创建一个将其送回图书馆,但是:使用“不安全”类型有什么风险?我该如何避免这些风险?

此外,Objective-C 库正在使用 uint8_t *桥接 Swift 为 UnsafeMutablePointer<UInt8> ...这是 Swift 互操作的最佳选择吗?

最佳答案

UnsafeMutablePointer 是您在 Swift 中表示 C 指针的方式。这是不安全的,因为指针指向的底层内存可能会在 Swift 指针不知道的情况下随时更改。它也没有关于它指向的内存块大小的信息(感谢 Martin)。

如果您的库要求您使用 C 类型,在本例中是指向 uint8_t 的指针,那么您必须使用 UnsafeMutablePointer。否则,如果您只想表示一个数字数组,我会将所有 uint8_t 类型包装在 NSArray 中作为 NSNumber 类型(或 NSData 如果你指向一个字节流)更容易桥接。

您可以通过取消引用指针(如果它不是 nil)并将存储在指针处的值复制到 Swift 应用程序中的变量来避免这些风险。

关于swift - 不安全可变指针<UInt8> : What's the risk?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37972175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com