我想知道是否有人可以告诉我如何完成以下任务:
我正在使用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:数组必须是全局的,因为我将在该类的不同位置使用它。
答案 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);
最后记得有没有数组边界检查,所以在索引时你必须自己做检查,否则你会读/写随机内存。