2010-04-22 80 views

回答

2

實例變量在分配時被歸零,所以你不能對它們使用初始值。

你需要的東西是這樣的:

// MyObject.h 

@interface MyObject 
{ 
    CGFloat color[4]; 
} 
@end 

// MyObject.m 

@implementation MyObject 

-(id) init 
{ 
    self = [super init]; 
    if (self != nil) 
    { 
     color[0] = red; 
     color[1] = green; 
     color[2] = blue; 
     color[3] = alpha; 
    } 
    return self; 
} 
+0

我對CGPoints塞滿的數組做了非常多的工作,它工作的很好。我猜測,因爲數組在對象初始化期間在堆中聲明,所以當對象消失時 - 數組也是如此?至少我希望,或者你是否在ARC之下,必須在那裏製作你自己的 - (void)dealloc方法和free()數組? – OverToasty 2013-02-04 21:04:06

0

您需要將尺寸放入以保留足夠的空間。

CGFloat color[4]; 

或者使用一個指向數組的指針,但這是更多的工作,並且對於表示衆所周知的顏色幾乎沒有優越性。

+0

似乎並沒有工作。我曾嘗試過編譯器錯誤。 – dontWatchMyProfile 2010-04-22 14:26:11

0

如果可以,最好使用NSColor對象。

但是,對於您的原始問題,我的第一個問題之一是您想要在哪裏創建此數組。當你說把它放在一個頭文件中時,你的意思是作爲一個類的成員或全局數組,但你當然可以做到這兩點,但是在將全局變量放在頭文件中有一些嚴重的問題。如果你需要跟進,我可以更好地解釋它。

如果它是在一個類中,那麼你可以像任何其他成員字段聲明它。如果你說

CGFloat color[4]; 

然後在你的對象本身分配數組的空間。您也可以只使用一個

CGFloat *color; 

或其道德等同物指的是存儲在對象之外的數組。但是,您確實需要適當管理該存儲。

在你暗示你使用常量數組對象的地方並且以後不能更改它的情況下,這很重要。這種情況可能會發生,但很少見,因爲第一種方法不會發生這種情況,您不會經常看到這種情況。

這裏有一個關於角落案例的完整論文,我相信它沒有幫助進入它。只需在對象中使用CGFloat color[4]即可,並且不會影響到您看到的東西時它們將會變化,您可以按照您的期望使用它們。

+0

我將如何設置值? – dontWatchMyProfile 2010-04-22 14:27:11

相關問題