可以在变量声明&中创建AVAudioPlayer()吗?避免选择/展开?

时间:2016-09-16 16:50:52

标签: swift avaudioplayer

我正在播放存储在iOS应用资产目录中的mp3文件。当我宣布具有应用程序范围的播放器时,我正在声明我的AVAudioPlayer。我的代码工作正常,但我想知道这是不是很糟糕的做法&如果是这样,为什么。大多数播放音频的代码示例都声明AVPlayer是可选的,但不要在声明时创建播放器,如下所示:

array

我在下面实现b / c没有对optionals或强制解包的任何引用(我只是在Swift中自己提升,但我正在使用它作为我的学生的早期“Get Excited”示例,所以他们可以在他们的第一个应用程序中播放媒体。希望推迟选择性讨论,直到稍后。)

//声明AVAudioPlayer并指定一个空播放器

var audioPlayer: AVAudioPlayer?

//调用此函数在名为“sound0”的资产文件中播放mp3声音

var audioPlayer = AVAudioPlayer()

//谢谢!

1 个答案:

答案 0 :(得分:1)

声明AVAudioPlayer非常重要,以便在播放声音时保留对象,因此最好将播放器声明为属性,就像您已经完成的那样。

我认为你的目标是希望延迟学习有关可选项的知识,所以我通过将玩家设置为空玩家来了解你正在尝试完成的任务。

我可能会建议将播放器声明为隐式可选:

var audioPlayer:AVAudioPlayer!

隐式可选变量不需要展开 - 当你知道变量在使用之前不会为nil时很好,但是不能在init方法中初始化。

你可以告诉你的学生不要担心'!'现在,它保持audioPlayer的使用与代码示例中的相同。 (实际上,大多数IBOutlet在实现UI时都以这种方式声明)

将播放器设置为空播放器并非最佳做法,因为您正在为永不使用的对象分配内存。

希望有所帮助!