2010-04-22 29 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

相关问题