用AVPlayer寫視訊播放器時,在被釋放之後 ,AVPlayer一直監聽的事件沒有被移除,造成程式崩潰
阿新 • • 發佈:2019-01-01
最近的專案是在寫視訊和音訊,在播放頁面做一些操作的時候有時候會出現崩潰,但是一直沒報錯,所以一直很困擾。
前幾天在播放頁面又加了一些邏輯處理,然後崩潰才報出了錯誤。
而報錯的提示是,AVPlayer這個類已經被釋放了,然而已經新增的訊息監聽還在,這就有可能會引起訊息的洩露。我的解決辦法是在檢視銷燬之前,取消監聽事件。
下面是我的解決辦法:
- (void)dealloc {
if (self.currentItem && self.player) {
[[NSNotificationCenterdefaultCenter] removeObserver:
[self.currentItemremoveObserver:selfforKeyPath:@"status"];
[self.currentItemremoveObserver:selfforKeyPath:@"playbackBufferEmpty"];
[self.currentItemremoveObserver:selfforKeyPath:@"playbackLikelyToKeepUp"];
}
}