2010-07-25 2 views
0

Использование этого кода вызывает ошибку шины. Может кто-то указать, что с ним не так? Я переопределяю метод из CALayer.Почему этот кусок кода, разбивающий CGColor, вызывает ошибку шины?

- (void) setBackgroundColor:(CGColorRef)c 
{ 
    float *components = (float *)CGColorGetComponents(c); 
    [super setBackgroundColor:[LOLColors colorWithRed:components[0] green:components[1] blue:components[2] alpha:transparencyLevel]]; 
} 

P.S.colorWithRed: green: blue: alpha - метод класса, который отлично работает.

Это прототип:

+ (CGColorRef) colorWithRed:(float)red green:(float)green blue:(float)blue alpha:(float)alpha 
+0

В то время как литье типов значений для других типов (например, 'CGFloat' для' float') никогда не должно быть проблемой, я был бы осторожен при выборе типов указателей на другие типы. Если 'CGFloat' на самом деле не является размером' float', у вас будут серьезные проблемы. – zneak

ответ

0

И снова, фигурная методом проб и ошибок.

Размер * Компоненты массив был меньше 2, поэтому я обращался к несуществующим членам.

+0

Я ужасный кодер. –

Смежные вопросы