【问题标题】:loadView is faster than getting images via AssetsloadView 比通过 Assets 获取图像更快
【发布时间】:2011-06-24 17:02:50
【问题描述】:

所以,在初始化函数中,我通过 AssetsLibrary 获取图像

//initWithNibName:

photoArray = [[NSMutableArray alloc ]init];
    ALAssetsLibrary *asset = [[ALAssetsLibrary alloc] init];
    void (^enumerateGroup)(ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop)
    {
        if (result != nil) {
            [photoArray addObject:result];
            NSLog(@"%@", result);
        }

    };
    void (^enumerationBlock)(ALAssetsGroup *, BOOL *) = ^(ALAssetsGroup *group, BOOL *stop)
    {
        if (group != nil) {
            [group enumerateAssetsUsingBlock:enumerateGroup];
        }
    };
    [asset enumerateGroupsWithTypes:ALAssetsGroupAll 
                         usingBlock:enumerationBlock 
                       failureBlock:^(NSError *error) {NSLog(@"Something went wrong");}];
    [asset release];

//加载视图

- (void)loadView
 {
UIView *view = [[UIView alloc ] init];
NSLog(@"%d", [photoArray count]);
self.view = view;
[view release];
}

从控制台登录:

2011-06-24 18:55:12.255 xxx[9450:207] 0 //

2011-06-24 18:55:12.306 xxx[9450:207] ALAsset - 类型:照片,网址:{ "public.jpeg" = "assets-library://asset/asset.JPG?id=1000000001&ext=JPG";

我很困惑。正如您在日志中看到的,loadView 执行代码的速度比 initWithNibName 快。这是因为通过 AssetLibrary 获取图像需要一些时间。但我认为所有这些代码都在一个线程中执行,所以 loadView 应该等待 initWithNibName。

【问题讨论】:

    标签: iphone assetslibrary


    【解决方案1】:

    -enumerateGroupsWithTypes:... 和 -enumerateAssetsUsingBlock:... 的文档并没有说这些方法是同步执行的。根据您的发现,他们似乎在不同的线程上进行枚举,因此您不必等待。

    【讨论】:

      猜你喜欢
      • 2016-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多