Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa touch UIImageWriteToSavedPhotosAlbum正在工作。。。有时_Cocoa Touch_Uiimagepickercontroller_Iphone Sdk 3.1 - Fatal编程技术网

Cocoa touch UIImageWriteToSavedPhotosAlbum正在工作。。。有时

Cocoa touch UIImageWriteToSavedPhotosAlbum正在工作。。。有时,cocoa-touch,uiimagepickercontroller,iphone-sdk-3.1,Cocoa Touch,Uiimagepickercontroller,Iphone Sdk 3.1,UIImageWriteToSavedPhotosAlbum仅在某些情况下有效。有时有效,有时无效,功能完全相同 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo { NSLog(@"Saving image to camera roll..."); UIImag

UIImageWriteToSavedPhotosAlbum仅在某些情况下有效。有时有效,有时无效,功能完全相同

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo {
NSLog(@"Saving image to camera roll...");
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
NSLog(@"Done!"); }
我使用UIImagePicker控制器获取图像,然后调用该函数

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo {
NSLog(@"Saving image to camera roll...");
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
NSLog(@"Done!"); }
有时它会将其保存到相机卷中,而有时则根本不会

有人知道吗

提前谢谢

编辑:

UIImageWriteToSavedPhotosAlbum的完成方法有时会返回以下错误:

wait_fences: failed to receive reply: 10004003

首先,我将向save调用添加一个completion target方法,以查看它是否产生任何错误。有关详细信息,请参阅
UIImageWriteToSavedPhotosAlbum
文档

编辑:


有一次它回来了。。。 wait_fences:无法接收答复: 10004003

这意味着操作超时。造成这种情况的原因有很多:

  • 内存不足:将日志放入
    didReceiveMemoryWarning
    ,查看是否是原因
  • 系统无法保存的损坏文件。如果每次都生成图像,那么每次可能都不正确
  • 未正确报告磁盘已满错误 我认为(1)最有可能,并解释了间歇性的本质。当你有足够的内存时,这个方法就会工作,如果你没有,它就会失败


    此外,在编译时,请解决出现的任何警告。这些只是运行时才会出现的错误。您的问题可能会列在那里

    希望这个答案不会太迟,对您有所帮助。我遇到了完全相同的问题。事实证明,这个问题是双重的。首先,在将图像发送到UIImageWriteToSavedPhotosAlbum之前,确实需要保留图像。其次,在iPhone4之前的设备上,这个功能可能需要很长时间才能完成。我找到的修复方法是实现回调函数。有关此信息,请参阅UIImageWriteToSavedPhotosAlbum的文档。函数必须采用正确的格式,不能只使用任何旧函数。在该功能中,请确保释放保留的图像,否则会泄漏内存。您还可以使用它来跟踪图像保存的时间。下面是我的基本代码:

        -(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];
        }
    

    请再详细一点,有错误信息吗?你确定图像不是零吗?是否实际调用了该方法?您还进行了其他故障排除吗?是的,在记录这些NSLogs时,肯定会调用它。不,图像不能为零,因为它有时会保存其他时间,但实际上没有。你解决问题了吗?我有一样的…不,我没有。再也没有看过它了。有一次它回来了。。。wait_fences:未能收到回复:10004003A朋友在他的3GS上测试了它,同样的事情发生了。我的应用程序根本不消耗内存,所以我认为这不应该是原因。无论如何,我会尝试放置它,看看它是否会给出任何内存警告。(不,没有任何编译警告。)不要假设内存使用情况。测试一下。Objective-C的一个弱点是错误会造成大量内存泄漏。如果不是内存,则下一个最可能的问题是图像损坏。如果你直接从摄像机上拍摄,我不知道会发生什么。我会尝试保存测试图像,而不是图像选择器返回的图像,以尝试隔离问题。在一次应用程序运行中,我拍摄了4张照片,3张保存正确,另一张没有,并触发了内存警告。在第二轮。。。我拍了7张照片,2张保存正确,没有错误,没有内存警告。看起来你可能有一些内存问题。我会看看是什么引起的,然后从那里开始工作。启动仪器,看看它在说什么。如果你所做的只是拍一张照片然后立即保存,我认为问题不在于照片本身。您可以尝试禁用应用程序的每个部分,但这一部分除外,然后查看是否存在问题。如果没有,请在遇到错误之前重新启动部件。一点也不晚。事实上,我已经搁置了这个项目,因为我有了另一个项目的想法,并且刚刚将该项目提交到应用商店。:)我今天要试试这个,谢谢。