2010-07-25 72 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 2010-07-25 20:46:23

回答

0

再次,通過試驗和錯誤想通。

大小*組件數組小於2,所以我正在訪問不存在的成員。

+0

我是一個可怕的編碼器。 – 2010-07-25 21:03:32

相關問題