我有:
在UIViewController中,我需要能够将项插入到6个整数的固定数组中。然后,我需要将此数组传递给视图,以便它分析数组并适当地更新屏幕。我该怎么做呢?我尝试过使用标准C阵列,但似乎没有用?
答案 0 :(得分:2)
您不能将C数组用作方法的参数,也不能将它们传递给某些东西。您有两种选择:
您选择哪一个取决于您。选项1更像iPhone。选项2的内存消耗较少。
答案 1 :(得分:1)
因为目标c不允许将C数组传递给目标c方法,除非它们作为指针发送,这是一种方法:
// MyViewController.m
#define BOX_INT(ARG_1) [NSNumber numberWithInt:ARG_1];
....
-(void) somethingHappened:(id) sender
{
// initialize the array:
NSArray *array = [NSArray arrayWithObjects:BOX_INT(ints[0]), BOX_INT(ints[1]), BOX_INT(ints[2]), BOX_INT(ints[3]), BOX_INT(ints[4]), BOX_INT(ints[5]), nil];
[myView passArray:array];
}
// MyView.m
#define UNBOX_INT(ARG_1) [ARG_1 intValue];
....
-(void) passArray:(NSArray *) array
{
int intArray[6];
for (int i = 0; i < 6; i++)
{
intArray[i] = UNBOX_INT([array objectAtIndex:i]);
}
...
}
或者,你可以传递指针(不推荐)
// MyController.m
-(void) somethingHappened:(id) sender
{
[myView passArray:ints];
}
-(void) passArray:(int *) array
{
// think of array as an integer array, with a length of 6.
}
答案 2 :(得分:0)
一直在讨论如何在两个类之间共享对象。 从广义上讲,有三种方法: -
但是,如果你真的想将一个数组从ViewController传递给View,我建议你选择第三种方法,即AppDelegate Variables。是的,总是指出这是快速但 Dirty 方法。
所以你可以做的是在Appdelegate中声明和数组。
现在在ur viewcontroller
中将项插入到该数组中UrAppDelegate* delegate = (UrAppDelegate*)[[UIApplication sharedApplication]delegate];
[delegate.urArrayName addObject:@"someObject"];
然后当你想在你的视图中使用它时......继续使用上面相同的方法。