1. 程式人生 > >用AVPlayer寫視訊播放器時,在被釋放之後 ,AVPlayer一直監聽的事件沒有被移除,造成程式崩潰

用AVPlayer寫視訊播放器時,在被釋放之後 ,AVPlayer一直監聽的事件沒有被移除,造成程式崩潰

最近的專案是在寫視訊和音訊,在播放頁面做一些操作的時候有時候會出現崩潰,但是一直沒報錯,所以一直很困擾。

前幾天在播放頁面又加了一些邏輯處理,然後崩潰才報出了錯誤。

而報錯的提示是,AVPlayer這個類已經被釋放了,然而已經新增的訊息監聽還在,這就有可能會引起訊息的洩露。我的解決辦法是在檢視銷燬之前,取消監聽事件。

下面是我的解決辦法:

- (void)dealloc {

if (self.currentItem && self.player) {

        [[NSNotificationCenterdefaultCenter] removeObserver:

self];

        [self.currentItemremoveObserver:selfforKeyPath:@"status"];

        [self.currentItemremoveObserver:selfforKeyPath:@"playbackBufferEmpty"];

        [self.currentItemremoveObserver:selfforKeyPath:@"playbackLikelyToKeepUp"];

    }

}