0
   if (mPlayerItem){
    [mPlayerItem removeObserver:self forKeyPath:kStatusKey];

    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:AVPlayerItemDidPlayToEndTimeNotification
                                                  object:mPlayerItem];
}

//create AVPlayerItem
NSURL *url = [self getUrlWithROAudio:audioFile];

mPlayerItem = [AVPlayerItem playerItemWithURL:url];
[mPlayerItem    addObserver:self
                forKeyPath:kStatusKey
                options:NSKeyValueObservingOptionInitial | NSKeyValueObservingOptionNew
                context:nil];

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(playerItemDidReachEnd:)
                                             name:AVPlayerItemDidPlayToEndTimeNotification
                                           object:mPlayerItem];

新しいAVPlayerItemを作成すると、最後のAVPlayerItemが存在するかどうかを確認し、removeObserverを取得しましたが、
-[AVPlayerItem removeObserver:forKeyPath:]:割り当て解除されたインスタンスにメッセージが送信されました

誰もが理由を知っていますか?

4

1 に答える 1

2

ある時点で、が指すオブジェクトmPlayerItemは解放されていますmPlayerItemが、に設定されていませんnil。プレーヤーインスタンスを保持しすぎたり、解放しすぎたりする可能性のある場所を探します。

于 2012-10-08T06:20:43.657 に答える