2014-02-27 100 views
0

我有iPhone 4S iOS 7.0.4 Jailbreak用戶的TestFlight崩潰日誌。在這條線上添加CGColorRef時CFArrayAppendValue崩潰

enter image description here

崩潰:

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; 
} 

我很想知道如何處理這個問題。

任何幫助表示讚賞!

+0

驗證'lighterColor'不是NULL,然後再將它添加到數組中。 – Emmanuel

回答

0

您崩潰的原因是傳遞給CFArrayAppendValue的值是NULL。或者說,這是保留回調所不希望的。有效的CGColorRef將與保留回調一起正常工作。

看着上面粘貼的代碼,可能的原因是color_爲零。這會導致lighterColor爲零,並且其CGColor成員爲NULL

在此方法中添加一個零檢查或在早期調試您的應用程序。

+0

我添加了一行來檢查color_是否爲零。如果它是零,我使用[UIColor whiteColor]。仍然崩潰! – iWheelBuy

+0

在同一個地方?這是不太可能的。你可以驗證lighterColor不是NULL嗎? – Buzzy

+0

我將在下次更新中實施此驗證 – iWheelBuy