例如,我想這些信息存儲在伊娃:如何使用C數組作爲實例變量?
CGFloat color[4] = {red, green, blue, 1.0f};
所以會我把這個在我的頭?
CGFloat color[];
我以後如何給這個人分配值?我的意思是我無法改變它,對吧?
例如,我想這些信息存儲在伊娃:如何使用C數組作爲實例變量?
CGFloat color[4] = {red, green, blue, 1.0f};
所以會我把這個在我的頭?
CGFloat color[];
我以後如何給這個人分配值?我的意思是我無法改變它,對吧?
實例變量在分配時被歸零,所以你不能對它們使用初始值。
你需要的東西是這樣的:
// 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;
}
您需要將尺寸放入以保留足夠的空間。
CGFloat color[4];
或者使用一個指向數組的指針,但這是更多的工作,並且對於表示衆所周知的顏色幾乎沒有優越性。
似乎並沒有工作。我曾嘗試過編譯器錯誤。 – dontWatchMyProfile 2010-04-22 14:26:11
如果可以,最好使用NSColor對象。
但是,對於您的原始問題,我的第一個問題之一是您想要在哪裏創建此數組。當你說把它放在一個頭文件中時,你的意思是作爲一個類的成員或全局數組,但你當然可以做到這兩點,但是在將全局變量放在頭文件中有一些嚴重的問題。如果你需要跟進,我可以更好地解釋它。
如果它是在一個類中,那麼你可以像任何其他成員字段聲明它。如果你說
CGFloat color[4];
然後在你的對象本身分配數組的空間。您也可以只使用一個
CGFloat *color;
或其道德等同物指的是存儲在對象之外的數組。但是,您確實需要適當管理該存儲。
在你暗示你使用常量數組對象的地方並且以後不能更改它的情況下,這很重要。這種情況可能會發生,但很少見,因爲第一種方法不會發生這種情況,您不會經常看到這種情況。
這裏有一個關於角落案例的完整論文,我相信它沒有幫助進入它。只需在對象中使用CGFloat color[4]
即可,並且不會影響到您看到的東西時它們將會變化,您可以按照您的期望使用它們。
我將如何設置值? – dontWatchMyProfile 2010-04-22 14:27:11
我對CGPoints塞滿的數組做了非常多的工作,它工作的很好。我猜測,因爲數組在對象初始化期間在堆中聲明,所以當對象消失時 - 數組也是如此?至少我希望,或者你是否在ARC之下,必須在那裏製作你自己的 - (void)dealloc方法和free()數組? – OverToasty 2013-02-04 21:04:06