При отложенной загрузке приложение для iPhone в первый раз становится менее отзывчивым, могу ли я предварительно выбирать изображения? - PullRequest
1 голос
/ 23 августа 2009

Из-за ленивой природы загрузки контроллеров представления в iPhone мое приложение несколько медлительно реагирует в первый раз, когда вы переходите на различные экраны, в которых есть богатые графические элементы (пользовательские графические ресурсы). Предварительная загрузка изображений приложения будет выполняться заранее, то есть с помощью предварительного вызова [UIImage imageNamed: ...], поэтому вместо этого будет использоваться следующая версия, называемая версией кэша.

Будет ли это работать? Любые другие советы, которые могут ускорить загрузку контроллеров представления, где задействован богатый пользовательский интерфейс (т. Е. Используется много пользовательских графических ресурсов)?

Ответы [ 2 ]

0 голосов
/ 09 августа 2010

Вы также можете заранее загрузить контроллеры представления и затем вызвать [viewController view], чтобы принудительно загрузить представление.

Я не думаю, что есть гарантия, что загрузка изображения или пера безопасна для вызова из другого потока. Загрузка изображений может быть безопасной, если они сделали кэш изображений поточно-ориентированным (NSMutableDictionary является поточно-ориентированным IIRC), загрузка пера меньше, так как init / viewDidLoad / etc может ожидать выполнения в основном потоке.

Если вы предварительно загрузите вещи в основном потоке, он заблокирует пользовательский интерфейс. Вы можете смягчить это, например, с помощью executeSelector: withObject: afterDelay: и небольшой задержкой (0,01? 0,1?); обратите внимание, что нет никаких гарантий. В OS 4 вы можете загрузить каждое изображение в операции в [NSOperationQueue mainQueue]; установка приоритета операции на что-то маленькое (0 или 0,1?) должно гарантировать, что пользовательский интерфейс получает приоритет.

Также обратите внимание, что любая предварительная загрузка немного бессмысленна, если вы используете столько памяти, что получаете предупреждение о памяти.

0 голосов
/ 23 августа 2009

Отправка +[UIImage imageNamed:] кэширует изображение, которое вы пытаетесь загрузить, поэтому отправка этого сообщения заблаговременно должна ускорить последующие захваты изображений (при условии, что они находятся в кэше) в соответствии с документами. imageNamed: документация здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...