これは非常に奇妙なバグです。
AVPlayer
リモートサーバーからビデオをストリーミングするために使用する各セルのtableViewがあります(Vineのようなタイムラインを考えてください)。そのため、スクロールすると、再利用されるセルが新しいビデオでプレーヤーを再構成します。
問題は、非常に速く前後にスクロールして、同じビデオを画面に出入りさせると、AVPlayer によって送信される要求が最終的に変更され、HTTP ヘッダーIf-None-Match
とが含まれるようになりますIf-Modified-Since
。体系的にサーバーに304 Not Modified
応答を返させます。
これは、AVPlayer の playerItem を満足させるようには見えず、ステータスが に変わりますAVPlayerItemStatusFailed
(興味深いことに、AVPlayer のステータスはまだAVPlayerStatusReadyToPlay
です)。エラーはAVErrorUnknown
(-11800) で OSStatus -12983 です (これはどこにも文書化されておらず、iOS SDK 全体のヘッダーには含まれていません)。
それが奇妙なことです。次に何をしようとも、AVPlayer とその playerItem は取り返しのつかないほど焼き尽くされてしまいます。別のアセットで再構成しても、このステータスを返すだけで黒いフレームが表示されます。さらに奇妙なことに、別の AVPlayer、AVPlayerItem 、およびAVAsset を初期化しても、再生されなくなり、アプリを強制終了して再起動する必要があります。
この時点で、私はかなり無知です。ここで何が起こっているか分かりますか?プレーヤーが接続にこれらのヘッダーを含めないようにすると修正されますが、要求シリアライザーは公開されません。