Dan*_*ark 1 unsafe-pointers swift
我在Objective-C库的回调中收到了其中一个: UnsafeMutablePointer<UInt8>
我能够解析它.我也可以创建一个将它发送回图书馆,但是:使用"不安全"类型有什么风险?我该如何避免这些风险?
另外,Objective-C库正在使用uint8_t *与Swift的桥接器UnsafeMutablePointer<UInt8>......这对于Swift互操作来说是最好的吗?
UnsafeMutablePointer是你如何在Swift中表示一个C指针.这是不安全的,因为指针指向的底层内存可能随时更改,而Swift指针不知道.它也没有关于它指向的内存块大小的信息(感谢Martin).
如果您的库要求您使用C类型,在这种情况下是指向a的指针uint8_t,那么您必须使用UnsafeMutablePointer.否则,如果你只想表示一个数字数组,我会将所有uint8_t类型包装在一个NSArrayas NSNumber类型中(或者NSData如果你指向一个字节流),以便更容易地进行桥接.
您可以通过取消引用指针(如果它是非零)并将存储在指针中的值复制到Swift应用程序中的变量来避免这些风险.
| 归档时间: |
|
| 查看次数: |
298 次 |
| 最近记录: |