gpt4 book ai didi

swift - 初始化 AudioConverterRef Swift 3.0

转载 作者:可可西里 更新时间:2023-11-01 00:57:49 27 4
gpt4 key购买 nike

var audioConverter : AudioConverterRef = nil
audioConverter = AudioConverterRef.init()

所以基本上我从这个 StackOverflow answer 中找到了上面的代码那是使用以前版本的 Swift。现在在 Swift 3.0 中,但是上面的 AudioConverterRef 初始化器不可用。

我注意到 AudioConverterRef 是对音频转换器对象的引用,我认为它是一个 AVAudioConverter

那么,简短的问题是我将如何在 Swift 3.0 中编写上述代码?更长的问题是创建仅引用 AVAudioConverterAudioConverterRef 有什么用?不是所有的变量都只是引用一个对象吗?

最佳答案

如您所知,AudioConverterRef 在 Swift 2.x 中只是 COpaquePointer 的类型别名,在 Swift 3 中是 OpaquePointer 的类型别名。

但是您应该意识到的一个重大变化不是名称,而是 Swift 3 中所有指针共有的特性:

  • 在Swift 3中,指针类型不能包含nil,如果要将nil存储到指针类型变量中,需要将其声明为Optional指针。 ( SE-0055 )

所以,对于简短的问题:

var audioConverter : AudioConverterRef? = nil
audioConverter = nil

对于较长的一个:

AudioConverterRef 类型声明为:

typedef struct OpaqueAudioConverter *   AudioConverterRef;

struct OpaqueAudioConverter 类型是隐藏的 C 结构。它不只是引用 AVAudioConverter,而且可能包含一些信息以使用基于 C 函数的 AudioConverter API。它的属性可能比 AVAudioConverter 中的类似属性以更原始的形式保存。

如果您需要的所有功能在 AVAudioConverter 中都可用,则您无需使用 AudioConverterRef

关于swift - 初始化 AudioConverterRef Swift 3.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41321910/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com