閲覧いただきありがとうございます。
表題の通り、UITableViewCell上に配置した動画のobserverの管理について質問させてください。
現在、SwiftにてUITableViewのCell内に動画を配置するアプリを開発しています。
各セル内に毎回動画を読み込む処理にすると動作が重くなってしまうため、
動画のサムネイル / AVPlayer / セルの背景
というレイヤー構造にし、
スクロールが終わったタイミングで表示されているセル内の動画を読み込んで再生する、
というフローになっています。
そこで「動画の読み込みが完了したタイミングでサムネイルを非表示にし、動画を再生する」という処理を行うために、各動画を読み込むタイミングで読み込み完了を通知するobserverを設定しました。
このobserverは読み込みが完了したタイミングで削除しています。
これである程度スムーズに動画が再生され(ているように見え)ました。
しかし、実装当初はセル数が少なかったので気づかなかったのですが、
セル数が多いと素早くスクロールした際に頻繁に落ちてしまうようになりました。
質問させていただきたいのは次の2件です。
1:落ちる原因は「セルが再利用されるタイミングでobserverが残っている」のではないかと考えています。
そこでUITableViewCellのprepareForReuse()メソッド内でobserverを削除しようとしたものの、上手く動きませんでした。
この落ちる現象を解決するにはどのような実装を行えばよいでしょうか?
2:仮に落ちる原因がセルが再利用されるタイミングにある場合、observerの追加をUITableViewControllerで行い、セルの削除をUITableViewCell内で行うことになります。
自分で実装していてなんだかあまり効率の良くない実装なのでは…と感じたのですが、この場合はobserverパターンを採用すること自体が間違っているのでしょうか…?
ご回答お待ちしています。
よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。