2
我對IOS很新。我想在viewDidLoad
的設備上獲取所有圖片。但是我在代碼中調用NSLog(@"%d", photos.count)
後總是執行該代碼塊,如下所示。如何處理這種情況?塊的執行總是延遲
__block NSMutableArray* photos = [[[NSMutableArray alloc] init] retain];
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
void (^assertsEnumerator)(ALAsset *, NSUInteger , BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop)
{
if(result)
{
NSLog(@"Assert name : %@", [result valueForProperty:ALAssetPropertyURLs]);
[photos addObject:[UIImage imageWithCGImage:[result aspectRatioThumbnail]]];
}
};
void (^groupEnumerator)(ALAssetsGroup*, BOOL*) = ^(ALAssetsGroup *group, BOOL *stop) {
if(group != nil) {
NSLog(@"Adding group %@", [group valueForProperty:ALAssetsGroupPropertyName]);
[group enumerateAssetsUsingBlock: assertsEnumerator];
}
};
[library enumerateGroupsWithTypes: ALAssetsGroupSavedPhotos
usingBlock:groupEnumerator
failureBlock:^(NSError * err) {NSLog(@"Erorr: %@", [err localizedDescription]);}];
[library release];
NSLog(@"%d", photos.count);
[photos release];
謝謝,ayoy!如果我需要返回enumerationBlock中的值,該怎麼辦?如果我在代理的即將到來的回調函數中需要這個值,該怎麼辦? – Jin 2012-02-28 08:43:17
你根本無法做到,而且你必須以某種方式解決它。見例如[這個問題和最佳答案](http://stackoverflow.com/questions/9474018/returning-uiimage-from-block)瞭解更多信息。 – ayoy 2012-02-28 08:49:30