ios - AVAudioPlayerDelegate 不调用该方法

标签 ios swift delegates audio-player

这是类中的方法:

import UIKIt
import Foundation

class notMoving {
    var drumPlayerObject = drumPlayer()
    var fileManagerObject = fileManager1()
    let drumStrength = 1
    var bassStrength = 1
    var synthStrength = 1
    var indexToPlay: Int = 0

    // here we start the drum player.
    func startToPlay()  {
        fileManagerObject.clearPlayedListDrum(drumStrength, KeyNoteOfInstDrum: "C")
        if let indexToPlay = fileManager1().randomizeTheNextInstrument(fileManager1().drums, Strength: drumStrength, KeyNote: "C")  {
            fileManager1().drums[indexToPlay].4 = true
            self.indexToPlay = indexToPlay
        }
        let instrument = fileManager1().drums[self.indexToPlay].0
        let name = fileManager1().drums[self.indexToPlay].1
        let length = fileManager1().drums[self.indexToPlay].2
        let power = fileManager1().drums[self.indexToPlay].3
        let ifplayed = fileManager1().drums[self.indexToPlay].4
        let tempo = Double(fileManager1().drums[self.indexToPlay].5)
        let bridge: Bool = false
        let extention = fileManagerObject.extentionOfFile
        let loops = fileManager1().drumNumberOfLoops()

        drumPlayerObject.play(instrument, name: name, extentionOfFile: extention, 
            length: length, power: power, ifplayed: ifplayed, tempo: tempo, loops: 
            loops, bridge: bridge)

        fileManager1().clearPlayedListDrum(drumStrength, KeyNoteOfInstDrum: "C")
    }
}

这是鼓播放器类的 AVAudioPlayerDelegate 扩展。

extension drumPlayer : AVAudioPlayerDelegate {
    func audioPlayerDidFinishPlaying(player: AVAudioPlayer!, successfully flag: Bool) {
        println("finished playing \(flag)")
        var notMovingObject = notMoving()
        notMovingObject.startToPlay()
    }

    func audioPlayerDecodeErrorDidOccur(player: AVAudioPlayer!, error: NSError!) {
        println("\(error.localizedDescription)")
    }
}

但是audioPlayerDidFinishPlaying在文件播放结束后不会调用startToPlay方法,它只是打印“finished Playing true”

我做错了什么?

最佳答案

您的 notMovingObject 不会在任何地方保留,因此在程序退出后 audioPlayerDidFinishPlaying() 对象被释放。

关于ios - AVAudioPlayerDelegate 不调用该方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28781684/

相关文章:

iOS 使用正则表达式拆分 NSString

ios - 如何在 Swift 中翻转 imageView

ios - 理解授权和协议(protocol)之间的关系

objective-c - Objective-C 中的委托(delegate)查询

ios4 - 代码块能完全取代委托(delegate)吗?

ios - 如何使用某种形式的数据持久性将文本类型数据保存在我的应用程序中

ios - 为什么我的 UITableView 在插入或删除行时出现 "jump"?

ios - 3rd 方框架 swift 文件中的编译器错误

删除条目后 UITableView 卡住

ios - 如何使用容器 View 中的分段控件来控制我的主视图