Ios 添加CGColorRef时CFArrayAppendValue崩溃
我有一份来自iPhone 4S iOS 7.0.4越狱用户的试飞坠毁日志 在这条线上崩溃:Ios 添加CGColorRef时CFArrayAppendValue崩溃,ios,objective-c,nsarray,Ios,Objective C,Nsarray,我有一份来自iPhone 4S iOS 7.0.4越狱用户的试飞坠毁日志 在这条线上崩溃: CFArrayAppendValue(colorArray, lighterColor); 发生崩溃时的完整方法: - (UIImage *) imageWithColor:(UIColor *)color_ Height:(CGFloat)height_ Retina:(BOOL)retina_ { UIGraphicsBeginImageContextWithOptions(CGSizeM
CFArrayAppendValue(colorArray, lighterColor);
发生崩溃时的完整方法:
- (UIImage *) imageWithColor:(UIColor *)color_ Height:(CGFloat)height_ Retina:(BOOL)retina_
{
UIGraphicsBeginImageContextWithOptions(CGSizeMake(1.0f, height_), YES, retina_ ? 2.0f : 1.0f);
CFMutableArrayRef colorArray = CFArrayCreateMutable(NULL, 2, &kCFTypeArrayCallBacks);
CGColorRef lighterColor = CGColorRetain([[color_ lighterColor] CGColor]);
CGColorRef darkerColor = CGColorRetain([[color_ darkerColor] CGColor]);
CFArrayAppendValue(colorArray, lighterColor);
CFArrayAppendValue(colorArray, darkerColor);
CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB();
CGGradientRef gradient = CGGradientCreateWithColors(space, colorArray, NULL);
CGContextDrawLinearGradient(UIGraphicsGetCurrentContext(), gradient, CGPointMake(0.0f, 0.0f), CGPointMake(1.0f, height_), kCGGradientDrawsBeforeStartLocation);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGColorRelease(lighterColor);
CGColorRelease(darkerColor);
return image;
}
我很想知道如何处理这个问题
感谢您的帮助 崩溃的原因是传递给CFArrayAppendValue的值为
NULL
。或者更确切地说,是retain回调所不期望的东西。有效的CGColorRef
将与retain回调一起正常工作
查看您上面粘贴的代码,可能的原因是color\uu
为零。这将导致lighterColor
为nil,其CGColor
成员为NULL
在这个方法中添加一个nil检查,或者在前面调试您的应用程序。我添加了一行检查color_uuu是否为nil。如果为零,则使用[UIColor whiteColor]。仍然崩溃!在同一地点?这是极不可能的。能否验证lighterColor是否为NULL?在将其添加到数组之前,请验证
lighterColor
是否为NULL。