ios - 无法使用 (UnsafeMutableRawPointer) 类型的参数列表调用类型 UnsafePointer<_> 的初始值设定项

标签 ios xcode swift3 outputstream multipeer-connectivity

当我从音频缓冲区数据以多点连接写入输出流时,出现错误

Cannot invoke initializer for type UnsafePointer<_> with an argument list of type (UnsafeMutableRawPointer)

我找到了很多解决方案,但这个解决方案对我没有帮助。

我的代码是:

func send(_ buffer: AudioBuffer) {
        print(buffer.mData!)
        print(buffer.mDataByteSize)

        outputStreme?.write(UnsafePointer(buffer.mData), maxLength: buffer.mDataByteSize)
    }

enter image description here

提前致谢..:)

最佳答案

当某些规范更改影响您的代码时,请检查官方引用。在你的情况下AudioBuffer.mData类型为UnsafeMutableRawPointer? ,并且您需要将其传递给 OutputStream.write(_:maxLength:) 的第一个参数类型 UnsafePointer<UInt8> .

UnsafeMutableRawPointer

你可以找到这个方法,它返回 UnsafeMutablePointer<T> :

func assumingMemoryBound<T>(to: T.Type)

绑定(bind)的概念有点令人困惑,但似乎您可以使用它进行指针类型转换:

outputStreme?.write(buffer.mData!.assumingMemoryBound(to: UInt8.self), maxLength: Int(buffer.mDataByteSize))

(假设强制展开 ! 按照您的建议足够安全 print(buffer.mData!) 。)

内存绑定(bind)对于大多数返回指针的 API 来说没有很好的定义,并且目前还没有效果。还有另一种类型转换方法 func bindMemory<T>(to: T.Type, capacity: Int) ,并且两者都可以正常工作(同样,就目前而言)。

关于ios - 无法使用 (UnsafeMutableRawPointer) 类型的参数列表调用类型 UnsafePointer<_> 的初始值设定项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45181614/

相关文章:

ios - Swift:无法使用类型为 'addObject' 的参数列表调用 '(AnyObject?!)'

ios - UItableView 显示重复的单元格,我的数据有什么问题吗?

ios - 我可以在自定义框架中添加 Pod 吗?

iphone - NSTimer 委托(delegate)选择

ios - 退出全屏后 MPMoviePlayerController 缩放模式问题

ios - iTunes Connect 帐户/角色与 Apple Developer 帐户之间的区别

xcode - 如何在xcode中设置lldb的发现路径

iphone - 在 Cocos2d 中编写方向键的最佳方法是什么?

ios - 通过 UIImagepickerController 从相机中选取图像并保存到 ios 中的相册后获取图像名称

ios - 相当于只调用一次的 "viewDidLayoutSubviews"?