Pergunta

O UIImageWriteToSAvedPhotosalbum está funcionando apenas às vezes. Às vezes funciona, às vezes não funciona, exatamente a mesma função.

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo {
NSLog(@"Saving image to camera roll...");
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
NSLog(@"Done!"); }

Estou usando um controlador UiImagePicker para obter a imagem que chama essa função.

Às vezes, ele o salva para o rolo da câmera, outras vezes simplesmente não.

Alguém tem alguma ideia?

Desde já, obrigado.

Editar:

O método de conclusão para UiImageWriteToSavedPhotosalbum retorna algum tempo um erro de:

wait_fences: failed to receive reply: 10004003
Foi útil?

Solução

Começaria adicionando um método de destino de conclusão ao salvar chamada para ver se está produzindo algum erro. Veja o UIImageWriteToSavedPhotosAlbum documentação para detalhes.

Editar:

Uma das vezes que retornou ... Wait_Fences: Falha ao receber Resposta: 10004003

Isso significa que a operação tem o tempo limitado. Existem muitas causas disso:

  1. Memória baixa: coloque um login didReceiveMemoryWarning Para ver se essa é a causa.
  2. Arquivos corruptos que o sistema não pode salvar. Se a imagem for gerada cada vez que poderá não sair da mesma vez.
  3. Erro completo do disco relatado incorretamente.

Eu acho (1) provavelmente e explica a natureza intermitente. Quando você tem memória suficiente, o método funciona e quando você não falha.

Além disso, quando você compilar, resolva quaisquer avisos que surgirem. Esses são apenas erros que não aparecem até o tempo de execução. Seu problema pode estar listado lá

Outras dicas

Espero que esta resposta não seja tarde demais para ser útil. Eu encontrei exatamente o mesmo problema. Acontece que o problema é duplo. Primeiro, a imagem precisa ser retida antes de ser enviada para UiImageWriteToSAVedPhotosalbum. Em segundo lugar, nos dispositivos pré-iphone4, essa função pode demorar um pouco para fazer suas coisas. A correção que encontrei foi implementar uma função de retorno de chamada. Veja a documentação para UiImageWriteToSAvedPhotosalbum sobre isso. A função deve estar no formato correto, você não pode simplesmente usar nenhuma função antiga. Nesta função, libere a imagem que você manteve ou você vazará memória. Você também pode usar isso para acompanhar quando as imagens terminarem. Aqui está o meu código básico abaixo:

    -(void)processImage:(UIImage *)image {
        [image retain];
        UIImageWriteToSavedPhotosAlbum(reconstructedImage, self, @selector(image:didFinishSavingWithError:contextInfo:), NULL);
}


    - (void)image:(UIImage *) image didFinishSavingWithError: (NSError *) error contextInfo: (void *) contextInfo {
        NSLog(@"SAVE IMAGE COMPLETE");
        if(error != nil) {
            NSLog(@"ERROR SAVING:%@",[error localizedDescription]);
        }
        [image autorelease];
    }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top