问题标签 [unsafemutablepointer]
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.
swift - UnsafeMutablePointer.pointee 和 didSet 属性
在我创建的结构(在 Xcode 10.1、Swift 4.2 上)中观察到的属性上使用 UnsafeMutablePointer 时出现了一些意外行为。请参阅以下操场代码:
看起来,将 UnsafeMutablePointer 上的指针修改为观察到的属性实际上并没有修改该属性的值。此外,将指针分配给属性的动作会触发 didSet 动作。我在这里想念什么?
arrays - 创建 Swift 数组的最快方法具有固定计数
我注意到这一点:
比仅仅花费更多的时间
但是,不安全指针使用起来不太方便,可能需要创建一个Array<Float>
以传递给其他代码。
但是这样做绝对会杀死它,并且只创建Array
填充零的值会更快。
任何想法如何创建一个Array
更快,同时,有一个实际的Array<Float>
方便?在我的项目的上下文中,我可能可以在内部处理 unsafe 指针,并Array
仅在模块外部需要时将其包装起来。
快速测试这篇文章中的所有答案:
结果:(在 1000 万次浮点数上)
数组创建:9.256 毫秒
array.create 更快:0.004 毫秒
Array.reserveCapacity ?: 0.264 毫秒
连续阵列?:10.154 毫秒
ContiguousArray.reserveCapacity:3.251 毫秒
UnsafeMutableBufferPointer BaseMath:0.049 毫秒
我正在以发布模式在 iphone 模拟器上临时运行应用程序。我知道我可能应该在命令行/独立中执行此操作,但是由于我打算将其编写为应用程序的一部分,所以这可能没问题。
对于我尝试做的事情,UnsafeMutableBufferPointer 看起来很棒,但是您必须使用 BaseMath 及其所有一致性。如果您追求更一般或其他背景。请务必阅读所有内容并确定哪一个适合您。
swift - 将 UnsafeMutablePointer 的实部提取为浮点数并将其存储在数组中
我有这个功能
这个电话
我想通过枚举arrayComplex
并将实部提取到常规数组中,例如
线
是不正确的。
item
是一个UnsafeMutablePointer<Float>
看在上帝的份上,我该怎么做?
谢谢。
========================
这是output
c - Swift 可变指针被覆盖
所以我有一些代码可以对 2 个图像进行深度检测。深度检测发生在本机 C 代码中。为了调用 C 库,我有另一个函数来构建我作为参数传入的 Int16 数组。
但是,当我直接在 C 调用的参数中进行函数调用时,它会覆盖第一个函数调用并两次传入相同的参数。
这就是我的意思,这是我对 C 库的调用:
获取面部详细信息调用如下所示:
我得到了这个扩展的可变指针:
所以当我运行上面的ImageProcessing.depthDetection
调用时,我可以看到打印出来的我的leftFace
和rightFace
数组确实不同,看起来像这样:
但是当我在 C 中将它们打印出来时,它们都是相同的rightFace
数组并且看起来像这样(我正在以不同的方式格式化我的 C 日志,但你可以看出左右都有相同的数据):
那么为什么第一个getFaceDetails
输出会被第二个输出覆盖呢?
最奇怪的部分是,如果我将结果分配getFaceDetails
给一个变量,然后像我在这里所做的那样将该变量作为参数传递:
然后突然之间它起作用了!我在 C 中的打印语句显示左右脸的不同数据。只有当我直接在参数中传递函数调用时,它才有错误的数据。
那么这里发生了什么?为什么我这样做的第一种方法不会产生与后者相同的结果?
arrays - 无需复制或分配的 Swift 数组类型之间的转换
我想访问一个现有的 UInt64 数组,就好像它是一个 Int8 数组一样。关键要求是效率——我不想复制或重新分配数据,只想直接访问。我不想要副作用(例如,我希望在执行此代码块后能够继续使用 uint64Array,正在阅读有关重新绑定具有未定义副作用的信息。)
我尝试使用 Swift 4.2 执行此操作:
但是,我在运行时在以下行出现致命错误:
这是正确的方法吗?如果是这样,为什么我会收到致命错误?
ios - 快速将值输出到 typedef 指针
我几乎可以肯定这个标题是不正确的,但这里......
我正在桥接一个 Objective-C 类来设置 typedef。桥已建立,我能够正确声明 typedef var。
在 Objective-C 中,我还从同一个类中调用了一个方法,该方法在被调用时会向变量 TestHandle 输出一个值。
当我使用 Swift 5 尝试此操作时,出现此错误:
任何指针?
c - 如何访问映射到 swift 结构的内存缓冲区?
这对你来说可能是微不足道的,但我是 Swift 的新手,我找不到答案。我使用 C 代码从 TCP/IP 转换数据,一切正常。但是当我尝试将数据发送回 Swift 时,我收到错误消息:“UnsafeMutablePointer”类型的值没有成员“x”(在编译时)。
简而言之,我的 C 代码生成了一个结构,我希望我的 swift 代码可以读取该结构并使用该结构来访问字段。注意:我不想复制数据(这里的示例很简单,但我处理的是 MB(GB)。
swift - Swift 5 Conversion UnsafeBufferPointer 的这些内存功能是否相同
我正在对我不太理解的代码进行一些 Swift 5 转换,即以前开发人员的遗留代码。我得到:
'withUnsafeBytes' 已弃用:改用 withUnsafeBytes(_: (UnsafeRawBufferPointer) throws -> R) rethrows -> R`
为了:
我想用这个替换它,但我不确定它是否做同样的事情:
在这两个 fxs 的上下文中使用:
ios - 将浮点数数组转换为 UnsafeMutablePointer>
我需要使用一个UnsafeMutablePointer<UnsafeMutablePointer<Float>?>!
用作参数的函数。它是在 Objective-C++ 框架中编写的,我通过桥接头访问它:
我在理解 args 参数的结构时遇到了一些麻烦,即float**
. 在 Swift 中,它要求一个 type 的参数,UnsafeMutablePointer<UnsafeMutablePointer<Float>>
我猜它指向一个浮点数组。
如果我创建一个浮点数组数组,我如何使用它来指向它,UnsafeMutablePointer<UnsafeMutablePointer<Float>>
以便我可以将它传递给 C++ 函数?