问题标签 [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 投票
2 回答
10355 浏览

swift - 将 Swift 结构转换为 UnsafeMutablePointer

有没有办法将 Swift 结构的地址转换为 void UnsafeMutablePointer?
我试过这个没有成功:

谢谢!


编辑:我实际上试图移植到 Swift的上下文是Learning CoreAudio中的第一个示例。
这是我到目前为止所做的:

我正在努力留在 Swift 中,但如果结果证明这是一个问题而不是优势,我最终将链接到一个 C 函数。

编辑:底线
如果您因为试图在 Swift 中使用 CoreAudio 的 AudioQueue 而遇到这个问题......不要。(详细阅读评论)

0 投票
2 回答
56 浏览

objective-c - Objective-c 指针魔术。类型保护

我有一本字典。我提取其中一个值如下:

而 foo 是:

如果字典值为数字,magicValue 将为NSNumber. 所以定义的字符串指针将指向一个NSNumber. 日志将返回 yes 进行号码检查。

我从未对此类方法添加保护,以检查“magicValue”是什么类。我假设当我定义一个带有字符串参数的方法时,它将是字符串。

我应该开始考虑这种行为并始终添加检查,还是以这种方式将该字典值分配给魔法并使用我的方法的人的错。我需要一些最佳实践建议以及如何处理。

这个问题可能已经回答了,但我不知道如何搜索。

0 投票
5 回答
17014 浏览

objective-c - 无法在 Swift 中分配 UnsafeMutablePointer ObjCBool​​ 类型的值

我不熟悉Objective C。

我正在使用一个私有框架,并且需要能够从我的 Swift 代码中更改其中一个属性。

该属性在 Objective C 中是这样声明的:

在swift中,我试图以这种方式更改属性的值:

我收到此错误

我不知道从这里去哪里,或者为什么我会收到这个错误

0 投票
0 回答
239 浏览

swift - 将 UIImage 转换为 [[UIColor]] 和从 [[UIColor]] 转换?

我想将我的 UIImage 与二维 UIColor 数组相互转换。我只找到了使用UnsafePointer<UInt8>.

有没有办法在不使用指针的情况下在 Swift 中做到这一点?

0 投票
1 回答
826 浏览

swift - 从 Swift 中的 unSafeMutablePointer Int16 获取价值以用于音频数据

我正在努力将此代码转换为 Swift,这有助于我获取用于可视化的音频数据。我在 Obj C 中使用的运行良好的代码是:

在 Swift 中,我试图写的是这一部分:

但是,当我 println() sampleValue 在控制台中出现(不透明值)时。我不知道如何实际阅读 sampleValue。

我是尝试读取音频数据以进行可视化的新手。任何有关获取音频数据缓冲区的帮助都会有所帮助。谢谢你。

0 投票
1 回答
94 浏览

c# - 现在还在使用“public String(char* value)”吗?

我遇到了(内部(定义)字符串“类”(.NET)):

评论里写的是什么:

我的问题:

我只能在不安全的上下文中使用它吗,现在使用那个 String(char* value) 是否仍然有意义,或者这只是过去的遗留物,基于这个 "ABC\0"(termination of that string) ?

如果我可以/应该使用它,这种方法的情况如何?

0 投票
2 回答
589 浏览

c# - 为什么这个黑白位图到布尔数组会创建正确的图像但设置错误的布尔值(C#)

这是一个获取透明和白色图像并尝试将其转换为布尔数组的函数。

我的单元测试代码给了我 2 张我期望的图像(见下文),但“numberOfMasked”总是高于我的预期。例如,如果“maskBuffer”标记了一个像素(参见下面的 mask_image_test.bmp),那么尽管“mask_bool_test70.bmp”)创建了一个标记了一个像素的图像。由于某种原因,标记为 true 的实际布尔值要高得多,而且看起来是随机的。我看到它的范围是 25 - > 70。

有人对这种奇怪的行为有任何想法吗?

调试表明,在“像素”内存中,有一些我没想到的字节,我希望看到一个字节设置为“FF”,但我有随机的数据部分。

mask_image_test.bmp:

mask_image_test.bmp

mask_bool_test70.bmp:

mask_bool_test70.bmp

0 投票
1 回答
103 浏览

ios - 为什么 NSMutableData 改变指针的地址?

我想快速预分配内存并将其包装,NSMutableData但可以通过指针访问。所以我有这个:

但是当我检查vertex指针的地址时,我看到了不同的值,vertexData.bytes所以据我所知,我不能再使用指针来按索引更改数据。如何避免这种情况并且只有一个内存块?

0 投票
3 回答
17351 浏览

c - 将具有长度的 UnsafePointer 转换为 Swift 数组类型

我正在寻找在 Swift 中实现合理的 C 互操作性的最简单方法,而我当前的块正在将 a UnsafePointer<Int8>(它是 a const char *)转换为[Int8]数组。

目前,我有一个简单的算法,它可以采用一个UnsafePointer和多个字节并将其转换为一个数组,逐个元素:

使用 可以加快循环本身的速度arr.reserveCapacity(length),但这并不能消除循环本身的问题。

我知道这个 SO question涵盖了如何转换UnsafePointer<Int8>String,但是String完全不同于[T]. 是否有一种方便的 Swift 方法将长度字节从 a 复制UnsafePointer<T>到 a 中[T]?我更喜欢纯 Swift 方法,而不是通过NSData或类似的方法。如果上述算法真的是唯一的方法,我很乐意坚持下去。

0 投票
2 回答
475 浏览

c# - 如何将 (byte* + offset) 分配给 byte[]?

我有一个结构:

第一个字节是TypeCode. 剩下的 15 个字节是一个 UTF8 编码的字符串。

我正在使用以下内容来填充nameBuf字节数组:

在上面的注释代码中,我试图在没有while迭代的情况下完成相同的任务,但它不起作用(没有编译错误,只是错误的插值)。我可以nameBuf在没有while-loop 的情况下分配吗?

更新
我也更喜欢使用(byte*)而不是Marshal.Copy.