从类外部的方法设置float数组的大小(或者GLKVector结构)

时间:2011-12-29 05:49:31

标签: objective-c c

我想知道是否有人可以告诉我如何完成以下任务:

我正在使用xcode故事板,传递一个值或改变一个值我应该使用一个segue,它基本上让我在预览中调用一个新类(view)的方法,在目标上设置一个值图。

所以我在我的预览视图中有这个:

ARViewController *temp = segue.destinationViewController;
[temp setDrawableArray:temp];

这里temp是我定义的结构,这个结构有一个int,我想用它来设置新类中数组的大小。

新类在Header File中的变量声明中如下:

@interface ARViewController : UIViewController <GLKViewDelegate>
{
    GLKVector3 drawableArray;
}
- (void)setDrawableArray:(Kanji)temp;

@end

在这里,我想问一下这个声明是否合适,或者它是否应该是

GLKVector3 *drawableArray;

(GLKVector只是一个浮点数的结构,所以它可以很容易地被浮动drawableArray替换)

关于类的实现(.m)我有方法:

- (void)setDrawableArray:(Kanji)temp
{
    drawableArray = GLKVector3 drawableArray[5];
    //Here i want to do some operations to the newly created array

}

这当然是错的,我不知道如何设置数组大小,如果有人会如此友善地告诉我,我会非常感激。

PD:数组必须是全局的,因为我将在该类的不同位置使用它。

1 个答案:

答案 0 :(得分:1)

非对象数组处理在Obj-C中与在C中相同。要声明动态全局数组,您需要将类型指针的变量声明为数组,就像声明指针一样到Obj-C对象。但是在C中,指向单个值的指针和指向值数组的指针之间确实没有区别,因此您的第二个声明是正确的:

GLKVector3 *drawableArray;

要分配数组使用calloc(number of elements, size of each element),例如创建一个5元素数组:

drawableArray = calloc(5, sizeof(GLKVector3));

完成阵列后,必须使用free()

将其释放
free(drawableArray);

最后记得有没有数组边界检查,所以在索引时你必须自己做检查,否则你会读/写随机内存。