【问题标题】:CGDataProviderCopyData and EXC_BAD_ACCESSCGDataProviderCopyData 和 EXC_BAD_ACCESS
【发布时间】:2013-10-17 08:45:00
【问题描述】:

我已将旧的 Xcode3 项目导入 Xcode5,并且在以下行得到 EXC_BAD_ACCESS:

pixelData =
 (NSData*) GDataProviderCopyData(CGImageGetDataProvider(picture.image.CGImage))

有人知道发生了什么变化吗?

它发生在 iOS7 上。在 iOS5 和 iOS6 上运行良好。

【问题讨论】:

  • 您可以检查是否有任何涉及的对象是nil。请添加断言和 NSLog。
  • picture.image.CGImage 不为零。

标签: ios7 exc-bad-access xcode5


【解决方案1】:

你需要使用这个:

CFMutableDataRef m_DataRef = CFDataCreateMutableCopy(0, 0, CGDataProviderCopyData(CGImageGetDataProvider(picture.image.CGImage))));

而不是这个:

pixelData = (NSData*) GDataProviderCopyData(CGImageGetDataProvider(picture.image.CGImage));

检查这个:

http://www.iphonedevsdk.com/forum/iphone-sdk-development/108072-exc_bad_access-in-ios-6-but-not-in-ios-5.html

【讨论】:

  • CFMutableDataRef m_DataRef = CFDataCreateMutableCopy... 仍然给出相同的错误。我已经仔细检查了 picture.image.CGImage 不是 nil
  • 你也改变了 UInt8 *m_PixelBuf=(UInt8 *)CFDataGetMutableBytePtr(m_DataRef);" 吗?
  • 好的,我这样做了: UInt8 * pixelDataNew=(UInt8 * )CFDataGetMutableBytePtr(CFDataCreateMutableCopy(0, 0, CGDataProviderCopyData(CGImageGetDataProvider(picture.image.CGImage))));像素数据 = (NSData*)像素数据新;它不会给我一个错误,但是我现在如何读取图像的字节? char *pixelBytes = (char *)[pixelData bytes];给我一个错误。
  • 对不起,我不知道你是否可以通过转换轻松地从 UInt8 获取 NSData,我建议在谷歌中挖掘更多以找到更好的方法,你可以从我已经附加的链接开始回答。
猜你喜欢
  • 1970-01-01
  • 2016-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-27
  • 2012-02-07
相关资源
最近更新 更多