Позвольте мне рассказать вам о проблеме, которую я испытываю, и о том, как я пытался ее решить. У меня есть UIScrollView, который загружает subviews как один прокручивается слева направо. Каждый subview имеет 10-20 изображений по 400x200 каждый. Когда я перехожу от просмотра к представлению, я испытываю довольно небольшое отставание.
После расследования я обнаружил, что после разгрузки всех взглядов и повторного пробуждения отставание исчезло. Я понял, что синхронное кэширование изображений стало причиной отставания. Поэтому я создал подкласс UIImageView, который загружал изображения асинхронно. Код загрузки выглядит следующим образом (self.dispatchQueue
возвращает очередную диспетчерскую очередь).
- (void)loadImageNamed:(NSString *)name {
dispatch_async(self.dispatchQueue, ^{
UIImage *image = [UIImage imageNamed:name];
dispatch_sync(dispatch_get_main_queue(), ^{
self.image = image;
});
});
}
Однако, после изменения всех моих UIImageViews в этот подкласс, я все еще испытывал отставание (я не уверен, что это было уменьшено или нет). Я сварил причину проблемы до self.image = image;
. Почему это вызывает столько задержек (но только при первой загрузке)?
Пожалуйста, помогите мне. = (