例如,我想这些信息存储在伊娃:如何使用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