你如何在Swift中传递C回调?考虑这个例子:
class AudioQueue {
var desc : AudioStreamBasicDescription
var queue : AudioQueue?
func audioQueueHandleBuffer(ctx : UnsafeMutablePointer<()>,
inAQ : AudioQueue!,
inBuffer : AudioQueueBufferRef) {
// do stuff
}
func initialize() {
// this does not work!
var err = AudioQueueNewOutput(&desc, audioQueueHandleBuffer,
nil, nil, nil, 0, queue)
// ...
}
}
Run Code Online (Sandbox Code Playgroud) 随着NSMutableData我可以创建数组Int's或Float的和存储的磁盘.
protocol BinaryConvertible
{
init()
}
extension Int : BinaryConvertible {}
struct Storage<T: BinaryConvertible>
{
let data = NSMutableData()
func append(value: T)
{
var input = value
data.append(&input, length: sizeof(T))
}
func extract(index: Int) -> T
{
var output = T()
let range = NSRange(location: index * sizeof(T), length: sizeof(T))
data.getBytes(&output, range: range)
return output
}
}
Run Code Online (Sandbox Code Playgroud)
Swift 3有一种在引擎盖下Data使用的新型NSData.喜欢String和NSString.我无法弄清楚如何添加例如Double使用新方法.
append函数现在需要a UnsafePointer<UInt8>,但是你如何从一个Double或任何随机结构创建它?