我正在播放存储在iOS应用资产目录中的mp3文件。当我宣布具有应用程序范围的播放器时,我正在声明我的AVAudioPlayer。我的代码工作正常,但我想知道这是不是很糟糕的做法&如果是这样,为什么。大多数播放音频的代码示例都声明AVPlayer是可选的,但不要在声明时创建播放器,如下所示:
array
我在下面实现b / c没有对optionals或强制解包的任何引用(我只是在Swift中自己提升,但我正在使用它作为我的学生的早期“Get Excited”示例,所以他们可以在他们的第一个应用程序中播放媒体。希望推迟选择性讨论,直到稍后。)
//声明AVAudioPlayer并指定一个空播放器
var audioPlayer: AVAudioPlayer?
//调用此函数在名为“sound0”的资产文件中播放mp3声音
var audioPlayer = AVAudioPlayer()
//谢谢!
答案 0 :(得分:1)
声明AVAudioPlayer非常重要,以便在播放声音时保留对象,因此最好将播放器声明为属性,就像您已经完成的那样。
我认为你的目标是希望延迟学习有关可选项的知识,所以我通过将玩家设置为空玩家来了解你正在尝试完成的任务。
我可能会建议将播放器声明为隐式可选:
var audioPlayer:AVAudioPlayer!
隐式可选变量不需要展开 - 当你知道变量在使用之前不会为nil时很好,但是不能在init方法中初始化。
你可以告诉你的学生不要担心'!'现在,它保持audioPlayer的使用与代码示例中的相同。 (实际上,大多数IBOutlet在实现UI时都以这种方式声明)
将播放器设置为空播放器并非最佳做法,因为您正在为永不使用的对象分配内存。
希望有所帮助!