Objective-C ベースの iOS アプリのパフォーマンスの問題について助けを求めています。
CALayer の renderInContext メソッドを使用して画面のコンテンツをキャプチャする iOS アプリケーションがあります。AVFoundation を使用してビデオを作成するのに十分なスクリーン フレームをキャプチャしようとします。次に、ユーザビリティに関する調査目的で、画面記録を他の要素と組み合わせます。画面がキャプチャされている間、アプリは UIWebView のコンテンツを表示したり、ネットワークを介してデータをフェッチしたりすることもできます。Web ビューのコンテンツは私の制御下にありません。ウェブ。
このセットアップは機能していますが、ご想像のとおり、バターのようにスムーズではありません。レイヤーはメイン スレッドでレンダリングする必要があるため、必要以上に UI の競合が発生します。私がやりたいのは、画面キャプチャよりも UI の応答性を優先するセットアップを行うことです。たとえば、ユーザーが Web ビューをスクロールしている場合、ひどいスクロール エクスペリエンスを経験するよりも、記録にフレームをドロップした方がよいでしょう。
私は、dispatch_source の合体から、フレーム キャプチャ リクエストをメイン キューのブロックとして CADisplayLink に送信するまで、いくつかの手法を試しました。これまでのところ、それらはすべてほぼ同じように機能しているようです。フレーム キャプチャは現在、画面のメイン ビューの drawRect でトリガーされています。
ここで質問したいのは、上記を踏まえて、目標を達成するためにどのようなテクニックを提案しますか? 答えは、素晴らしい答えがないということかもしれませんが、奇抜に聞こえるかもしれませんが、何でも試してみたいと思います。
注: どのような手法でも、App Store に適したものにする必要があります。Display Recorder が使用/使用する CoreSurface ハックのようなものは使用できません。
ご協力いただきありがとうございます!