不能调用初始化类型UnsafePointer <_>与类型(UnsafeMutableRawPointer)的参数列表
当我写的音频缓冲数据multipeer连接输出流我得到了错误不能调用初始化类型UnsafePointer <_>与类型(UnsafeMutableRawPointer)的参数列表
不能调用UnsafePointer <初始化类型_ >用型的(UnsafeMutableRawPointer)参数 列表
我发现很多的解决方案,但这种方法不适合我很有帮助。
我的代码是:提前
func send(_ buffer: AudioBuffer) {
print(buffer.mData!)
print(buffer.mDataByteSize)
outputStreme?.write(UnsafePointer(buffer.mData), maxLength: buffer.mDataByteSize)
}
谢谢.. :)
请查看官方参考时某种规格的变化已与您的代码的影响。在你的情况AudioBuffer.mData
是UnsafeMutableRawPointer?
类型,你需要将它传递给UnsafePointer<UInt8>
类型的第一个参数OutputStream.write(_:maxLength:)
。
你可以找到这个方法,它返回UnsafeMutablePointer<T>
:
func assumingMemoryBound<T>(to: T.Type)
的约束的概念是有点混乱,但似乎你可以使用它的指针类型转换:
outputStreme?.write(buffer.mData!.assumingMemoryBound(to: UInt8.self), maxLength: Int(buffer.mDataByteSize))
(Assumi NG强制展开!
足够安全由您print(buffer.mData!)
的建议。)
内存势必 -ness不能很好地为其返回指针大多数API定义,并且有没有影响,因为现在。还有另一种类型转换方法func bindMemory<T>(to: T.Type, capacity: Int)
,两者都可以毫无问题地工作(同样,目前)。
使用你先生......你是天才 –
试试这个:
withUnsafePointer(to: &data) {rawUuidPtr in //<- `rawUuidPtr` is of type `UnsafePointer<uuid_t>`.
let bytes = UnsafeRawPointer(rawUuidPtr).assumingMemoryBound(to: UInt8.self)
outputStream.write(bytes, maxLength: 4)
}
你需要,而不是NSData的斯威夫特处理数据的3个 – KKRocks
@KKRocks我这是不安全的可变原始指针,但我想不安全的指针,因为它在输出参数STRAM谢谢 –