2014-09-06 85 views
-1
if ([UIImagePickerControllerisSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { 
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; 
    imagePicker.delegate = self; 
    imagePicker.sourceType = 
    UIImagePickerControllerSourceTypeCamera; 
    imagePicker.allowsEditing = NO; 
    self.imagePicker = imagePicker; 
    [self presentViewController:self.imagePicker animated:YES completion:nil]; 
} 

不能再简单了。然而,当这个代码运行时,我得到这个:UIImagePickerController在iOS7上崩溃

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0]' 

Argh。我做错了什么?

编辑:这不是我的代码导致异常

-[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0]' 
*** First throw call stack: 
(0x184a53100 0x190f5c1fc 0x18495d37c 0x18495d1c4 0x187a963a8 0x187a26efc 0x18c40dd8c 0x187a16fe0 0x187608258 0x187602e20 0x187602cd8 0x187602560 0x187602304 0x1875fbc38 0x184a13858 0x184a10ae0 0x184a10e6c 0x184951dd0 0x18a639c0c 0x187a82fc4 0x100077f24 0x19154faa0) 
libc++abi.dylib: terminating with uncaught exception of type NSException 

EDIT 2:将异常断点详细

libobjc.A.dylib`objc_exception_throw: 
0x190f5c1c0: stp fp, lr, [sp, #-16]! 
0x190f5c1c4: add fp, sp, 0 
0x190f5c1c8: stp x20, x19, [sp, #-16]! 
0x190f5c1cc: stp x22, x21, [sp, #-16]! 
0x190f5c1d0: stp x24, x23, [sp, #-16]! 
0x190f5c1d4: sub sp, sp, #4032 
0x190f5c1d8: mov x20, x0 
0x190f5c1dc: orr x0, sp, #0x20 
0x190f5c1e0: bl  0x190f778e4    ; symbol stub for: +[NSObject isSubclassOfClass:] 
0x190f5c1e4: mov x19, x0 
0x190f5c1e8: adrp x8, 13401 
0x190f5c1ec: add x8, x8, 1552 
0x190f5c1f0: ldr x8, [x8, 0] 
0x190f5c1f4: mov x0, x20 
0x190f5c1f8: blr x8 
0x190f5c1fc: mov x20, x0 
0x190f5c200: adrp x8, 13400 
0x190f5c204: add x8, x8, 2616 
0x190f5c208: ldr x1, [x8, 0] 
0x190f5c20c: bl  0x190f6c1c0    ; objc_msgSend 
0x190f5c210: str x20, [x19] 
0x190f5c214: adrp x8, 13401 
0x190f5c218: add x8, x8, 1928 
0x190f5c21c: add x8, x8, 16 
0x190f5c220: mov x21, x19 
0x190f5c224: str x8, [x21, #8]! 
0x190f5c228: mov x0, x20 
0x190f5c22c: bl  0x190f5a540    ; object_getClassName 
0x190f5c230: movz x8, #0 
0x190f5c234: str x0, [x19, #16] 
0x190f5c238: cbz x20, 0x190f5c264   ; objc_exception_throw + 164 
0x190f5c23c: cmn x20, #0 
0x190f5c240: b.ge 0x190f5c25c    ; objc_exception_throw + 156 
0x190f5c244: lsr x8, x20, #57 
0x190f5c248: and x8, x8, #0x78 
0x190f5c24c: adrp x9, 13401 
0x190f5c250: add x9, x9, 2144 
0x190f5c254: ldr x8, [x9, x8] 
0x190f5c258: b  0x190f5c264    ; objc_exception_throw + 164 
0x190f5c25c: ldr x8, [x20, 0] 
0x190f5c260: and x8, x8, #0x1fffffff8 
0x190f5c264: str x8, [x19, #24] 
0x190f5c268: adrp x22, 13410 
0x190f5c26c: add x22, x22, 2742 
0x190f5c270: ldrb w8, [x22] 
0x190f5c274: cbz w8, 0x190f5c294   ; objc_exception_throw + 212 
0x190f5c278: mov x0, x20 
0x190f5c27c: bl  0x190f5a540    ; object_getClassName 
0x190f5c280: stp x20, x0, [sp, #8] 
0x190f5c284: str x19, [sp] 
0x190f5c288: adrp x0, 28 
0x190f5c28c: add x0, x0, 2824 
0x190f5c290: bl  0x190f5bd54    ; _objc_inform 
0x190f5c294: adrp x8, 13410 
0x190f5c298: add x8, x8, 2743 
0x190f5c29c: ldrb w8, [x8] 
0x190f5c2a0: cbz w8, 0x190f5c2fc   ; objc_exception_throw + 316 
0x190f5c2a4: ldrb w8, [x22] 
0x190f5c2a8: cbnz w8, 0x190f5c2c8   ; objc_exception_throw + 264 
0x190f5c2ac: mov x0, x20 
0x190f5c2b0: bl  0x190f5a540    ; object_getClassName 
0x190f5c2b4: stp x20, x0, [sp, #8] 
0x190f5c2b8: str x19, [sp] 
0x190f5c2bc: adrp x0, 28 
0x190f5c2c0: add x0, x0, 2824 
0x190f5c2c4: bl  0x190f5bd54    ; _objc_inform 
0x190f5c2c8: add x22, sp, 32 
0x190f5c2cc: movz w1, #500 
0x190f5c2d0: mov x0, x22 
0x190f5c2d4: bl  0x190f77a64    ; symbol stub for: +[NSObject resolveInstanceMethod:] 
0x190f5c2d8: mov x23, x0 
0x190f5c2dc: adrp x8, 13399 
0x190f5c2e0: ldr x8, [x8, 5] 
0x190f5c2e4: ldr x0, [x8, 0] 
0x190f5c2e8: bl  0x190f77ae8    ; symbol stub for: -[NSObject methodSignatureForSelector:] 
0x190f5c2ec: mov x2, x0 
0x190f5c2f0: mov x0, x22 
0x190f5c2f4: mov x1, x23 
0x190f5c2f8: bl  0x190f77a7c    ; symbol stub for: -[NSObject doesNotRecognizeSelector:] 
0x190f5c2fc: mov x0, x20 
0x190f5c300: nop  
0x190f5c304: adrp x2, 0 
0x190f5c308: add x2, x2, 792 
0x190f5c30c: mov x0, x19 
0x190f5c310: mov x1, x21 
0x190f5c314: bl  0x190f77920    ; symbol stub for: +[NSObject conformsToProtocol:] 
+0

哪行代码导致崩溃的代码?你发布的任何内容都与创建“NSDictionary”无关。 – rmaddy 2014-09-06 03:26:09

+0

这不是你发布的代码。除了您没有将'imagePicker'赋予您所呈现的'self.imagePicker'属性(我认为这是一个错字)之外,该片段应该可以工作。 – ChrisH 2014-09-06 03:39:44

+0

我添加了异常断点细节。它不是特别照亮。 – fansonly 2014-09-06 03:55:19

回答

-2

可能是因为该行的你的应用程序崩溃

imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; 

用以下行代码

controller.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType: UIImagePickerControllerSourceTypePhotoLibrary]; 

这是对的UIImagePickerController

if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypePhotoLibrary]) 
{ 
    UIImagePickerController *controller = [[UIImagePickerController alloc] init]; 
    controller.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
    controller.allowsEditing = NO; 
    controller.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType: UIImagePickerControllerSourceTypePhotoLibrary]; 
    controller.delegate = self; 
    [self.navigationController presentViewController: controller animated: YES completion: nil]; 
} 

}

的UIImagePickerController委托方法

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    [self.navigationController dismissViewControllerAnimated: YES completion: nil]; 
    YourImageView.image = [info valueForKey: UIImagePickerControllerOriginalImage]; 
} 

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker; 
{ 
    [self.navigationController dismissViewControllerAnimated: YES completion: nil]; 
} 
+1

这个答案没有尝试处理有关异常(崩溃)的问题。 – rmaddy 2014-09-06 04:12:30

相关问题