簡體   English   中英

如何停止AVQueuePlayer內存泄漏?

[英]How to stop AVQueuePlayer memory leak?

我正在使用Xcode 7,Swift和iOS 9.0。

如果我...

  • 使用某些項目創建AVQueuePlayer
  • 開始播放
  • 然后removeAllItems() ...不會釋放內存。

如果調用此函數,它將開始占用內存:

var queuePlayer: AVQueuePlayer!

func startAgain(){

    if queuePlayer != nil{
        queuePlayer.pause()
        queuePlayer.removeAllItems()
        queuePlayer = nil
    }

    var items: [AVPlayerItem] = []

    for _ in 1 ... 10 {
        items.append(AVPlayerItem(URL: NSBundle.mainBundle().URLForResource("Music", withExtension: "mp3")!))
    }

    queuePlayer = AVQueuePlayer(items: items)
    queuePlayer.play()

    NSTimer.scheduledTimerWithTimeInterval(5, target: self, selector: "startAgain", userInfo: nil, repeats: false)
}

我什至將AVPlayerItemAVURLAsset子類 ,看它們是否被初始化了……而且它們確實可以! 所以我不知道為什么會這樣。

使用儀器我可以看到VM:性能工具數據正在使用內存,並且永遠不會釋放。

您有什么想法釋放內存嗎?

我應該如何使用AVQueuePlayer釋放內存?

您需要注意釋放當前的數組變量項:[AVPlayerItem]。 最好將其創建為類屬性。 根據您的代碼,計時器不會失效,因此它將保留舊數組。 最佳做法是在創建新計時器之前釋放舊計時器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM