Реализация ALAssetsLibrary внутри блока вызывает плохой доступ

Я преобразовал свой проект в arc, и теперь он выдает ошибку неверного доступа при создании новой библиотеки ресурсов. До ARC проблем не было.

Какие-либо предложения?

[self.stillImageOutput captureStillImageAsynchronouslyFromConnection:stillImageConnection
                                                   completionHandler:^(CMSampleBufferRef imageDataSampleBuffer, NSError *error) 
{
    if (error) {
        NSLog(@"Take picture failed");
    }
    else 
    {
        NSData *jpegData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageDataSampleBuffer];
        CFDictionaryRef attachments = CMCopyDictionaryOfAttachments(kCFAllocatorDefault, 
                                                                    imageDataSampleBuffer, 
                                                                    kCMAttachmentMode_ShouldPropagate);
        ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
        [library writeImageDataToSavedPhotosAlbum:jpegData 
                                         metadata:(__bridge_transfer id)attachments
                                  completionBlock:^(NSURL *assetURL, NSError *error) {
                                      if (error) {
                                          NSLog(@"Save to camera roll failed");
                                      }
                                  }];

        if (attachments)
            CFRelease(attachments);
    }
}];

2 ответа

Решение

Иногда жизнь может быть такой тяжелой. До ARC мне не нужно было сохранять CFDictionaryRef. Поэтому добавление CFRetain(вложений); после инициализации вложений удалил плохой доступ.

Ура, ванна

Помните, что вам следует инициализировать библиотеку активов только один раз в течение всего жизненного цикла приложения. Таким образом, вы должны, например, сделать это в appdelegate или другом синглтоне. В вашем коде, по-видимому, есть риск, что библиотека ресурсов будет инициализирована несколько раз.

Ура,

Хендрик

Другие вопросы по тегам