作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在将一些代码移植到 Swift,但我对如何处理指针感到困惑。
在 Swift 中,如何以 C 函数可以访问的方式创建一个空的内存块?
C 源代码:
UInt8* bytes = malloc( qty_bytes_in_file );
..并且,这样做之后,您将如何创建指向该内存任意偏移量的指针?我需要将指针反复移动到这个内存块中的不同地址,然后 C 函数将向这些地址写入数据。
C 源代码:
void* mData = &bytes[i];
这是我开始使用的 C 代码的缩写版本,因此您可以在上下文中看到这两行:
C 源代码:
UInt8* bytes = malloc( qty_bytes_in_file ); // Swift equivalent?
while ( !err ) {
AudioBufferList buffer_list = new_buffer_list();
buffer_list.mBuffers[0].mData = &bytes[i]; // Swift equivalent?
// each iteration, ExtAudioFileRead fills
// in a portion of buffer_list's '.mData':
err = ExtAudioFileRead(
audio_file,
&qty_frames_requested,
&buffer_list
);
i += foo;
}
最佳答案
对于第一个问题,我只是制作一个字节值数组:
var bytes = Array<UInt8>(count: qty_bytes_in_file, repeatedValue: 0)
而且我认为您可以提供对该数组的引用作为输入输出参数。例如:
let stream = NSInputStream(data: someNSDataObject)
let numberOfBytesRead = stream.read(&bytes, maxLength:buffer.count)
Swift 中还有一个可用的包装器……
struct UnsafePointer<T>
... 具有“内存”属性以获取原始底层内存。
关于指向内存块中任意字节的 COpaquePointer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24122031/
我正在将一些代码移植到 Swift,但我对如何处理指针感到困惑。 在 Swift 中,如何以 C 函数可以访问的方式创建一个空的内存块? C 源代码: UInt8* bytes = malloc( q
我有以下无法编译的 swift 代码: class CustomView: NSView { override func drawRect(dirtyRect: NSRect) { var
在 Swift 中我如何转换 CFStringRef[]和 CFTypeRef[]至 CMutablePointer ? 我想调用CFDictionaryCreate来自 swift 。我已经定义:
我是一名优秀的程序员,十分优秀!