【问题标题】:iPhone - crash when saving a camera picture to the iPhone albumiPhone - 将相机照片保存到 iPhone 相册时崩溃
【发布时间】:2011-07-26 12:17:25
【问题描述】:

我正在用我的应用拍照,委托方法被调用,图像被保存在库中,但我在日志中有一个崩溃错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[NSInvocation invocationWithMethodSignature:]: method signature argument cannot be nil'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x33ac0987 __exceptionPreprocess + 114
    1   libobjc.A.dylib                     0x3347b49d objc_exception_throw + 24
    2   CoreFoundation                      0x33a6b05d +[NSInvocation invocationWithMethodSignature:] + 340
    3   PhotoLibrary                        0x3038da11 __-[PLAssetsSaver _createWriteImageCompletionBlockWithImage:target:selector:contextInfo:]_block_invoke_1 + 96
    4   PhotoLibrary                        0x3038d7cd __-[PLAssetsSaver _saveImage:imageData:properties:completionBlock:]_block_invoke_2 + 56
    5   PhotoLibrary                        0x3038de87 __-[PLAssetsSaver queueJobData:requestEnqueuedBlock:completionBlock:imagePort:previewImagePort:]_block_invoke_2 + 122
    6   libSystem.B.dylib                   0x33c32680 _dispatch_call_block_and_release + 20
    7   libSystem.B.dylib                   0x33c32e38 _dispatch_main_queue_callback_4CF + 220
    8   CoreFoundation                      0x33a482ab __CFRunLoopRun + 1334
    9   CoreFoundation                      0x33a47c87 CFRunLoopRunSpecific + 230
    10  CoreFoundation                      0x33a47b8f CFRunLoopRunInMode + 58
    11  GraphicsServices                    0x33b0e4ab GSEventRunModal + 114
    12  GraphicsServices                    0x33b0e557 GSEventRun + 62
    13  UIKit                               0x32099329 -[UIApplication _run] + 412
    14  UIKit                               0x32096e93 UIApplicationMain + 670
    15  MySoPrettyApp                       0x00002737 main + 82
    16  MySoPrettyApp                       0x000026e0 start + 40
)
terminate called after throwing an instance of 'NSException'

我的代码如下:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    UIImage *pickedImage = [[info objectForKey:UIImagePickerControllerOriginalImage] retain];
    UIImageWriteToSavedPhotosAlbum (pickedImage, self, @selector(photoSaved:::), nil);
}

-(void)photoSaved:(UIImage*)image didFinishSavingWithError:(NSError*)error contextInfo:(void*)contextInfo {
    if(!error){
        NSLog(@"Photo saved to library!");
    } else{
        NSLog(@"Saving failed :(");
    }
}

pickedImage 不为零。
photoSaved 方法在 .h
中声明 我还尝试了@selector(photoSaved:) 和@selector(photoSaved)。

有什么问题?

【问题讨论】:

    标签: iphone exception callback camera save


    【解决方案1】:

    获取选择器的正确方法如下,因为参数名称也是方法名称的一部分:

     @selector(photoSaved:didFinishSavingWithError:contextInfo:)
    

    【讨论】:

    • 谢谢,我不知道。对不起,我今晚懒得问这么简单的问题。
    【解决方案2】:

    试试这样:

    - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo 
    {
        if(!error){
            NSLog(@"Photo saved to library!");
        } 
        else{
        NSLog(@"Saving failed :(");
        }
    }
    
    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
    {
        UIImage *pickedImage = [[info objectForKey:UIImagePickerControllerOriginalImage] retain];
        UIImageWriteToSavedPhotosAlbum(pickedImage, self, @selector(image:didFinishSavingWithError:contextInfo:), nil );
    }
    

    【讨论】:

    • 没问题。祝你的项目好运。
    猜你喜欢
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 2011-09-30
    • 2019-08-30
    • 1970-01-01
    • 2010-12-29
    相关资源
    最近更新 更多