0

我正在开发照片应用程序,这是交易:

我创建了自定义相册并添加了一些照片(用户可以创建许多相册)。我用于ALAssetsLibrary此和CustomPhotoAlbum类别。一切都完美无缺,直到我需要取回这些照片以重新使用它们。所以我为这个类别创建了自定义方法,我正在保存UIImagesNSMutableArray但我希望这个方法在外面返回这个数组......我的问题是enumerateAssetsUsingBlock:在后台运行并将照片保存到相册,而我想访问它们!我怎样才能让这种方法等到每张照片都加载到相册然后返回NSArray

这是我的方法:

 - (void)loadImagesFromAlbumNamed:(NSString *)name
{
    NSMutableArray *photos = [[NSMutableArray alloc] init];

    [self enumerateGroupsWithTypes:ALAssetsGroupAll
                        usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
                            if (group == nil) {
                                return;
                            }

                            if ([[group valueForProperty:ALAssetsGroupPropertyName] isEqualToString:name]) {
                                [group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
                                    if (result == nil) {
                                        return;
                                    }

                                    // NSLog(@"%@", result);
                                    UIImage *image = [UIImage imageWithCGImage:(__bridge CGImageRef)([result defaultRepresentation])];
                                    [photos addObject:image];
                                }];
                                NSLog(@"%@", [photos description]);
                            }
                        } failureBlock:^(NSError *error) {
                            NSLog(@"%@", [error localizedDescription]);
                        }];
}

我希望你能理解我的观点......如果没有,请询​​问,我会尝试更好地解释它!

4

1 回答 1

1

不要试图等待。相反,将一个块传递给您的方法,当所有资产处理块完成时应该调用该块,并将图像数组传回给调用者。调用者不应该阻塞,你只想构建你的方法来处理你正在尝试做的事情的异步性质。

于 2013-07-30T09:44:37.180 回答