我想在iOS 8.2上使用AVMIDIPlayer播放MIDI文件。
这确实有效,但是很短的次数:内存似乎永远不会被释放,并最终被填满。
下面是我在Swift 1.2中的代码,减少到最低限度:一切都发生在ViewController中,没有其他类,没有代理,没有错误检查等。
界面只有三个按钮:NEW(实例化一个新的AVMIDIPlayer和预卷),PLAY,STOP。
这个内存问题发生在模拟器和实际设备上,声音和midifile越大,它就越糟糕。
我注意到在创建新的AVMIDIPlayer实例时以及在播放midifile时RAM会增长(在后一种情况下,你甚至可以达到+ 4Mb /秒)。
我错过了什么?
感谢您的帮助。
import UIKit
import AVFoundation
class ViewController: UIViewController {
var mp:AVMIDIPlayer?
@IBAction func newButton(sender: AnyObject) {
mp = AVMIDIPlayer(contentsOfURL: NSBundle.mainBundle().URLForResource("ahVous", withExtension:"mid"),
soundBankURL: NSBundle.mainBundle().URLForResource("TimGM6mb", withExtension:"sf2"),
error: nil)
mp!.prepareToPlay()
}
@IBAction func playButton(sender: AnyObject) {
mp!.play(nil)
}
@IBAction func stopButton(sender: AnyObject) {
mp!.stop()
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}