objective-c – DCRoundSwitch在使用ARC时给出EXC_BAD_ACCESS

objective-c – DCRoundSwitch在使用ARC时给出EXC_BAD_ACCESS,第1张

概述我正在使用 DCRoundSwitch的项目,我基本上需要一个UISwitch,我可以编辑它的标签内容. 因为我正在使用ARC,所以我将DCRoundSwitch代码重构为xcode中的ARC兼容. 当在模拟器中编译和运行时,它没有任何问题. 但是,当在设备上运行时,它会在DCRoundSwitchKnobLayer.m的第57行附近提供EXC_BAD_ACCESS 在GitHub有一个bug r 我正在使用 DCRoundSwitch的项目,我基本上需要一个UISwitch,我可以编辑它的标签内容.

因为我正在使用ARC,所以我将DCRoundSwitch代码重构为xcode中的ARC兼容.

当在模拟器中编译和运行时,它没有任何问题.

但是,当在设备上运行时,它会在DCRoundSwitchKnobLayer.m的第57行附近提供EXC_BAD_ACCESS

在GitHub有一个bug report,但没有找到解决方案.

以下是EXC_BAD_ACCESS的代码:

CGGradIEntRef CreateGradIEntRefWithcolors(CGcolorSpaceRef colorSpace,CGcolorRef startcolor,CGcolorRef endcolor){    CGfloat colorStops[2] = {0.0,1.0};    CGcolorRef colors[] = {startcolor,endcolor};    //THIS liNE BREAKS THE PROGRAM    CFArrayRef colorsArray = CFArrayCreate(NulL,(const voID**)colors,sizeof(colors) / sizeof(CGcolorRef),&kcfTypeArrayCallBacks);     CGGradIEntRef gradIEnt = CGGradIEntCreateWithcolors(colorSpace,colorsArray,colorStops);    CFRelease(colorsArray);    return gradIEnt;}

任何线索将不胜感激.

编辑:这里是xcode的局部变量:

解决方法 colorsArray使用CFRelease方法发布. ARC不允许使用保留和释放,所以为什么不尝试评论行CFRelease(colorsArray),看看是否阻止了错误?

编辑 –

该答案被接受,因为它通过禁用ARC提供了对OP的问题的有效修复.

如果您不想使用此方法,请参阅@ petesh的答案.

总结

以上是内存溢出为你收集整理的objective-c – DCRoundSwitch在使用ARC时给出EXC_BAD_ACCESS全部内容,希望文章能够帮你解决objective-c – DCRoundSwitch在使用ARC时给出EXC_BAD_ACCESS所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/langs/1252281.html

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

发表评论

登录后才能评论

评论列表(0条)

保存