I'm using DCRoundSwitch for a project where I basically need an UISwitch where I'm able to edit its label contents.
Because I'm using ARC I refactored the DCRoundSwitch code to be ARC-compatible in xcode.
When compiling and running in the simulator it works without any problems.
However, when running on the device it gives me EXC_BAD_ACCESS near line 57 of DCRoundSwitchKnobLayer.m
There is a bug report at GitHub but no solution has been found yet.
Here is the code that gives 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;
}
Any clues would be appreciated.
EDIT: Here are the local variables from xcode:

 
     
     
     
    