Ошибка при попытке назначить __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.

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

Ответы на вопрос(2)

Ваш ответ на вопрос