我正在使用
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的局部变量: