【问题标题】:imagePickerController didFinishPickingMediaWithInfo giving me a weird imageuiimagePickerController didFinishPickingMediaWithInfo 给了我一个奇怪的图像
【发布时间】:2013-04-03 00:01:16
【问题描述】:

我编写了一些代码来添加用相机拍摄的照片并将其添加到 UIImages 的 NSMutableArray。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    [picker dismissModalViewControllerAnimated:YES];

    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];

    self.description.text = [NSString stringWithFormat:@"image is %d by %d", image.size.width, image.size.height];

    //[self.imageArr addObject:image]

    //[self saveImages];
}

“self.description.text”是我在 iPhone 上测试时用来获取信息的 UILabel(我的 macbook 太旧,无法升级到最新的操作系统和 Xcode 版本)。

我发现当我将图片添加到我的imageArr时,应用程序崩溃了(我知道imageArr不是nil,我已经使用描述UILabel检查了)。

如果我注释掉addObject和saveImages函数,我发现我拍照后,描述说UIImage的宽度为0,高度为1084850176。以前有人遇到过这个问题吗?这几天我一直在尝试在应用中拍摄和保存照片,但我似乎无法解决这个问题。

编辑: 我通过使用 %f 而不是 %d 解决了图像尺寸问题(感谢 idz!)。

当我取消注释 [self.imageArr addObject:image] 行时,它仍然崩溃。崩溃报告说运行该行时异常类型为 EXC_CRASH (SIGABRT)。我真的不知道这意味着什么,但我确定 imageArr 不是 nil 并且它是一个 NSMutableArray,所以我不明白为什么它一直在那里崩溃。

【问题讨论】:

  • image.size.widthimage.size.heightCGFloats 所以你应该使用 %f%g 来打印它们。此外,您应该通过崩溃的意思添加更多信息...您看到什么消息?
  • 天啊!我固定切换到 %f 并且尺寸现在是正确的,但是当我取消注释 [self.imageArr addObject:image] 行时它仍然崩溃。崩溃报告说运行该行时异常类型为 EXC_CRASH (SIGABRT)。我真的不知道这意味着什么,但我确定 imageArr 不是 nil 并且它是一个 NSMutableArray,所以我不明白为什么它一直在那里崩溃。
  • 为什么不用NSLog给自己发送描述性消息???为什么不单步执行调试器中的代码,以便查看所有这些东西的真正价值?您正在通过 guesswork 编程!
  • 你能告诉我self.imageArr和saveImages方法的alloc init部分吗
  • @Matt - 我无法从我的设备上进行调试,因为我使用的是过时的 Xcode 版本,而我的 iPhone 具有最新的操作系统。我还不太了解如何在 iPhone 上进行调试,所以是的,我应该更多地使用 NSLog,我很快就会看看。

标签: ios xcode uiimage uiimagepickercontroller


【解决方案1】:

通常你必须分配和初始化self.imageArr

这通常是导致这些错误的原因。此外,如果它是一个数组,请确保它是一个可变数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多