Ошибка при попытке назначить __block ALAsset изнутри assetForURL: resultBlock:

Я пытаюсь создать метод, который вернет мне ALAsset для заданного URL-адреса ресурса. . (Мне нужно загрузить ресурс позже, и я хочу сделать это за пределами блока результатов с результатом.)

+ (ALAsset*) assetForPhoto:(Photo*)photo
{
    ALAssetsLibrary* library = [[[ALAssetsLibrary alloc] init] autorelease];
    __block ALAsset* assetToReturn = nil;

    NSURL* url = [NSURL URLWithString:photo.assetUrl];
    NSLog(@"assetForPhoto: %@[", url);

    [library assetForURL:url resultBlock:^(ALAsset *asset) 
    {
        NSLog(@"asset: %@", asset);
        assetToReturn = asset;
        NSLog(@"asset: %@ %d", assetToReturn, [assetToReturn retainCount]);        

    } failureBlock:^(NSError *error) 
    {
        assetToReturn = nil;
    }];

    NSLog(@"assetForPhoto: %@]", url);
    NSLog(@"assetToReturn: %@", assetToReturn); // Invalid access exception coming here.

    return assetToReturn;
}

Проблема в том, что assetToReturn выдает EXC_BAD_ACCESS.

Есть ли проблема, если я попытаюсь назначить указатели изнутри блока? Я видел несколько примеров блоков, но они всегда имеют простые типы, такие как целые числа и т. Д.

5
задан mithuntnt 2 October 2011 в 14:53
поделиться