У меня есть метод drawRect, который довольно медленный (100-200 мс).Чтобы сэкономить время, мне нужно кэшировать результаты.Я делаю фактическое кэширование так:
// 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();
Само кэширование может занять до 40 мс.Это все еще легко стоит.Но кеширование должно ждать, пока все не будет отображено, иначе все получится неправильно.Кроме того, кэширование является задачей с низким приоритетом.Как только все отобразится, возможно, что другие вещи будут продолжаться, и если это так, кэширование может подождать.Но поскольку он использует UIKit, он должен находиться в главном потоке.
Вместо того, чтобы вводить произвольную задержку, существует ли пуленепробиваемый способ такого ожидания?