从ALAssetsLibrary方法获取信息

时间:2014-04-24 19:26:34

标签: objective-c asynchronous objective-c-blocks alassetslibrary

我有这个代码,他从我的图片中获取资产网址:

NSUrl *caminhoImagem;

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
    // Request to save the image to camera roll
    [library writeImageToSavedPhotosAlbum:[imagem CGImage] orientation:(ALAssetOrientation)[imagem imageOrientation] completionBlock:^(NSURL *assetURL, NSError *error){
        if (error) {
            NSLog(@"Erro na criacao de imagem");
        } else {
            NSLog(@"Caminho da Imagem -> %@", assetURL);
            caminhoImagem = assetURL;

        }
    }];

    NSLog(@"%@",caminhoImagem);

正在发生的是 NSLog(@"%@",caminhoImagem); 让我(' null'),除非它被插入到该方法中(更具体地说是在那个Else中),我无法理解的是我使用这个命令进行了引用:

caminhoImagem = AssetUrl;

似乎没有保存信息,我怀疑来自' completionBlock' ,在我看来似乎阻止某些内容,我该如何解决这个问题,并采取措施方法的信息?

1 个答案:

答案 0 :(得分:1)

该块是异步执行的,因此您需要从块内部调用一些方法来使用资产URL。您可以记录在块完成之前运行的打印null,这样它就无法访问资产URL。