Вопрос

Так что это довольно странное объявление, я не уверен, что проблема с AssetsLibrary API, но я не могу выяснить, что еще может происходить.

Я загружаю массив с Alassets, используя метод -enUmerAteasssEsusIngBlock на AlassetsGroup. Когда он завершает, я загружаю пользовательский скроллер изображений. Когда Scroller заканчивает прокрутку, я использую NsinvocationOcerations для загрузки изображений для видимых видимых видов (страниц) из библиотеки фото на диске. Как только изображение загружено и кэшируется, он уведомлен, он уведомляет делегата, который затем захватывает изображение из кэша и отображает его в представлении изображения в Scroller.

Все работает нормально, но время, когда нужно, когда-setimage: фактически вызывается в то время, когда он на самом деле отображается заметно на экране невыносимо - иногда 10 секунд или более для фактического появления.

Я попробовал его как с изменением изображения, так и без изображения, который не добавляет почти ничего к времени обработки, когда я делаю изменение размера. Как я уже сказал, замедление - это где-то после того, как я звоню -SetImage на изображении вид. Кто-нибудь осознает какой-то аспект аспекта AssetLibrary API, который может привести к этому?

Вот какой-то соответствующий код:

- (void)setImagesForVisiblePages;
{
  for (MomentImageView *page in visiblePages)
  {
    int index = [page index];
    ALAsset *asset = [photos objectAtIndex:index];

    UIImage *image = [assetImagesDictionary objectForKey:[self idForAsset:asset]];

    // If the image has already been cached, load it into the
    // image view. Otherwise, request the image be loaded from disk.
    if (image)
    {
      [[page imageView] setImage:image];
    }
    else {
      [self requestLoadImageForAsset:asset];      
      [[page imageView] setImage:nil];
    }
  }  
}
.

Это было полезно?

Решение

Это, вероятно, испортит любые веб-поиски, которые хотят решать проблемы с AssetsLibrary, поэтому для этого я прошу прощения.Оказывается, проблема не была ассортиментом вообще, а скорее мое использование мультипоток.Как только изображение закончило загрузку, я публиковал уведомление с использованием Nsnotification по умолчанию.Он публикул его на фоновой резьбе, который был затем обновлять (или попытаться обновить, по крайней мере) UiimageView с -setimage.Как только я изменил его, чтобы использовать -performselectiononmaintHead и имел этот селектор настроить изображение вместо этого, все было хорошо.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top