首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AssetsLibrary和ImageView -setImage速度缓慢

AssetsLibrary和ImageView -setImage速度缓慢
EN

Stack Overflow用户
提问于 2010-07-14 10:44:50
回答 1查看 858关注 0票数 0

所以这是一个相当奇怪的广告,我不确定是不是AssetsLibrary应用程序接口出了问题,但我不知道还会发生什么。

我使用ALAssets在ALAssetsGroup上使用-enumerateAssetsUsingBlock方法加载一个数组。当它完成时,我正在加载一个自定义的图像滚动条。滚动结束时,我使用NSInvocationOperations从磁盘上的图片库加载当前可见视图(页面)的图像。一旦图像被加载和缓存,它就会通知代理,然后代理从缓存中抓取图像,并在滚动条的图像视图中显示它。

一切正常,但是从实际调用-setImage:到它实际显示在屏幕上所花费的时间是无法忍受的--有时需要10秒或更长时间才真正显示出来。

我已经尝试过使用和不使用图像大小调整,这几乎不会增加我调整大小时的处理时间。正如我所说的,在图像视图上调用-setImage之后,速度会变慢。有没有人知道可能导致这种情况的AssetLibrary应用编程接口的某些方面?

下面是一些相关的代码:

代码语言:javascript
复制
- (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];
    }
  }  
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-07-15 06:38:54

这可能会扰乱任何寻求解决AssetsLibrary问题的网络搜索,因此我对此表示道歉。事实证明,问题根本不是AssetsLibrary造成的,而是我对多线程的使用。图像加载完成后,我使用默认的NSNotificationCenter发布了一个通知。它将其发布到后台线程,然后后台线程正在使用-setImage更新(或至少尝试更新) UIImageView。一旦我将其更改为使用-performSelectorOnMainThread,并让该选择器设置图像,一切都很好。

似乎无论我对多线程有多熟悉,我仍然会时不时地忘记一些小问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3243052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档