私は現在、タッチメソッドのクワッドカーブを介して変更可能なパスに線を追加し、新しい領域でsetNeedsDisplayInRectを呼び出すフリーハンドのiPadアプリを持っています。
問題は、描画 (パス) がかなり大きくなり、再描画に時間がかかり、動きが鈍くなることです。ユーザーがブラシのサイズまたは色を変更するたびに、再描画時に以前に描画されたパスの重複部分にこれが適用されます。
これに対抗するために、touchesEnded のバックグラウンド スレッドで renderInContext を呼び出し、これを描画ビューの背後にあるイメージ ビュー内の別の UIImage とマージします。次に、描画ビューをクリアします。
これはまた、ユーザーが保存を押すと、描画は通常、単一の UIImage で既にレンダリングされているため、すぐに使用できます。
これは他のデバイスでは問題なく動作しますが、iPad 3 Retina ディスプレイではパフォーマンスが非常に悪く、ユーザーがすばやく描画するときに指を何度も離すたびにクラッシュする傾向があります。
この種の状況に対処するためのベスト プラクティスについて、何らかのアドバイスを求めていますか? バックグラウンドでレンダリングするビューを追加して、メイン スレッドとバックグラウンド スレッドが同時に同じビューにアクセスするのを防ぐことは別として (ハックのように聞こえますが)、死んだ馬を打ち負かしているように感じますか?