问题标签 [unsafe-pointers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
368 浏览

swift - 不安全可变指针: 有什么风险?

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

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

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

0 投票
2 回答
852 浏览

swift - 通用类型 `UnsafeMutablePointer 的扩展`

我想创建一个UnsafeMutablePointer仅影响UnsafeMutablePointer<UInt8>...的扩展程序

我知道这些说明是相关的,但我不确定如何:

扩展泛型类型时,您不提供类型参数列表作为扩展定义的一部分。相反,原始类型定义中的类型参数列表在扩展的主体中可用,并且原始类型参数名称用于引用原始定义中的类型参数。

基本上,我正在尝试使用这种方法:

self没有UnsafeMutablePointer<UInt8>作为参数的情况下采取行动......这可能吗?

0 投票
1 回答
224 浏览

swift - Swift 中对 UnsafeMutablePointer 进行类型转换的惯用方式到非空类型数组?

许多 C/Obj-C API 处理指向 void 的指针。在 swift 中,这些类型通常表示为 UnsafeMutablePointer 或 UnsafePointer(对于 const void*)。Swift 中将这些值重新解释为打包数据数组的典型方法是什么,例如 [Float] 或 [UInt8] ?

0 投票
1 回答
899 浏览

swift - 我是否需要释放 UnsafeBufferPointer 或在缓冲区指针的起始内存位置使用的 UnsafePointer?

考虑这个NSData将对象序列NSData化为十六进制字符串的扩展:

如果 anUnsafeBufferPointer是非拥有指针,这是否意味着我不需要(或无法)显式调用销毁?如果我UnsafePointer从对象字节的内存中创建一个NSData,是否需要确保在复制缓冲区后销毁该指针?

0 投票
1 回答
593 浏览

swift - 如何创建 UnsafePointer从现有的 CGRect

如何创建 UnsafePointer?尝试让 mediaBoxPtr = UnsafePointer(mediaBox) 但失败

0 投票
4 回答
18682 浏览

swift - 如何从 UnsafeMutableRawPointer 中获取字节?

如何访问由 C API(Core Audio 等)传递给 Swift 函数的 UnsafeMutableRawPointer(Swift 3 中的新功能)指向的内存中的字节(或 Int16、浮点数等)?

0 投票
3 回答
21205 浏览

swift3 - Swift 3 UnsafePointer($0) 不再在 Xcode 8 beta 6 中编译

我的代码片段如下……:

...不再编译,出现以下我不明白的错误:

该怎么做才能修复它?

0 投票
3 回答
3453 浏览

swift - 在 Swift 中转换为不同的 C 结构不安全指针

我想从 Swift调用socketPosix套接字函数。很简单——它需要s,但会导致问题,因为我有一个指针,但它需要一个指针。在 C 中,这将是一个演员表,例如:bindsocketInt32bindsockaddr_insockaddr

这是 Swift 中的一个尝试:

bind行无法编译:无法将“sockaddr_in”类型的值转换为预期的参数类型“sockaddr”

如何投射指针?

0 投票
1 回答
175 浏览

c# - 声明一个指向类定义结构的指针,其中类是通用的

在 C# 中使用unsafeorfixed关键字时,您可以定义指向非托管类型的指针,例如byte* int*等。您还可以定义指向仅包含非托管类型的任何结构的指针,例如:

但是,如果泛型类定义中定义,我会得到structerror 。这种限制的原因是什么?CS0208: Cannot take the address of, get the size of, or declare a pointer to a managed type

更新:仅当包含类是泛型时才会发生此错误。我仍然看不出错误的原因 - 编译器可以看到该结构将始终包含非托管类型,因为它不引用泛型类型T

注意:在最终版本中,此功能似乎已添加到 C#:请参阅GitHub 上的此问题

0 投票
1 回答
2122 浏览

swift3 - Swift 3 - 将 c 结构 sockaddr_in 转换为 CFData

我需要你的帮助,这段代码在 Swift 3 中不再编译

我必须修复“withUnsafePointer”行,但我不知道怎么做?

我尝试过这样的事情

编译器说我必须使用 withMemoryRebound 但如何?谢谢