在更改CFDataRef的字节时,iOS 6上的EXC_BAD_ACCESS,但不是5

在更改CFDataRef的字节时,iOS 6上的EXC_BAD_ACCESS,但不是5,第1张

概述我有一个应用程序,可以将各种过滤器应用于图像.它在iOS 5上运行良好但在6上崩溃.下面是它崩溃的地方示例: CGImageRef inImage = self.CGImage;CFDataRef m_DataRef = CGDataProviderCopyData(CGImageGetDataProvider(inImage)); UInt8 * m_PixelBuf = (UInt8 *) 我有一个应用程序,可以将各种过滤器应用于图像.它在iOS 5上运行良好但在6上崩溃.下面是它崩溃的地方示例:

CGImageRef inImage = self.CGImage;CFDataRef m_DataRef = CGDataProvIDercopyData(CGImageGetDataProvIDer(inImage)); UInt8 * m_PixelBuf = (UInt8 *) CFDataGetBytePtr(m_DataRef); int length = CFDataGetLength(m_DataRef);for (int i=0; i<length; i+=4){    if(filter == filterCurve){    int r = i;    int g = i+1;    int b = i+2;    int red = m_PixelBuf[r];    int green = m_PixelBuf[g];    int blue = m_PixelBuf[b];    m_PixelBuf[r] = SAFEcolor(red); //    <==== EXC_BAD_ACCESS (code = 2)    m_PixelBuf[g] = SAFEcolor(green);    m_PixelBuf[b] = SAFEcolor(blue);   }}

当我尝试将值分配回m_PixelBuf时,请注意错误的访问点.任何人都知道为什么会这样? iOS 6中的内容会导致什么?

解决方法 这解决了问题: http://www.iphonedevsdk.com/forum/iphone-sdk-development/108072-exc_bad_access-in-ios-6-but-not-in-ios-5.html

在iOS 6中,如果要直接 *** 作数据的字节,则需要使用CFDataCreateMutablecopy()(而不是CGDataProvIDercopyData()),然后使用CFDataGetMutableBytePtr()(而不是CFDataGetBytePtr()).

总结

以上是内存溢出为你收集整理的在更改CFDataRef的字节时,iOS 6上的EXC_BAD_ACCESS,但不是5全部内容,希望文章能够帮你解决在更改CFDataRef的字节时,iOS 6上的EXC_BAD_ACCESS,但不是5所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1053399.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存