かなり遅い(100-200ms)drawRectメソッドがあります。時間を節約するために、結果をキャッシュする必要があります。私は次のように実際のキャッシュを行っています:
// some code to check if caching would be desirable goes here. If it is desirable, then
UIGraphicsBeginImageContext(viewSize);
CGContextRef c = UIGraphicsGetCurrentContext();
[view.layer renderInContext: c];
UIImage* image = UIGraphicsGetImageFromCurrentImageContext();
[self.cachedImageArray addObject:image];
UIGraphicsEndImageContext();
キャッシング自体は最大40msかかる場合があります。これはまだ簡単に価値があります。ただし、キャッシングはすべてがレンダリングされるまで待機する必要があります。そうしないと、問題が発生します。さらに、キャッシングは優先度の低いタスクです。すべてが表示された後も、他のことが進行している可能性があります。その場合、キャッシュは待機できます。ただし、UIKitを使用しているため、メインスレッド上にある必要があります。
任意の遅延を入れるのではなく、このように待つ防弾の方法はありますか?