我有一个C数组val[6]
,我用来在一个iPad应用程序的Objective-C ViewController类(我们称之为ClassA)中存储一组double值。我需要从另一个ViewController访问这个数组(我们称之为ClassB)。显然我不允许将数组设为@property
,所以我做了一个getter方法,只获取数组中的一个值:
-(double)getVal:(int)index{
return val[index];
}
我在ClassB的for循环中用我的其他方法调用它:
double newVal[6];
for(int i = 0; i < 6; i++)
newVal[i] = [obj getVal:i];
其中obj是我实例化类型ClassA的对象。有点笨重,我知道,但我认为它的用途很好。不幸的是,newVal[]
填充了0,我无法弄清楚原因。 val[]
在ClassA的.h文件中实例化,并在每次调用getter方法之前运行程序时调用的方法中填充:
-(IBAction)intervalButton:(id)sender{
//sum the previous time values
double sum = 0;
for(int i = 0; i < count; i++)
sum += val[i];
//I cut some code out of this method before posting it,
//so the conditions under which val is populated might not
//make sense, but I really just wanted display how I was setting the values of val.
if(count < 5){
val[count] = number - sum;
count++;
}else
val[count] = number - sum;
}
为什么我的ClassB中的数组不会被填充?这是一个范围问题(即我的数组是否在该方法中填充但不在其外部)或者我试图从ClassA获取值的方式是否存在问题?
答案 0 :(得分:0)
听起来obj
要么是nil,要么实际上还没有在其数组中放置任何值。调试的时刻很容易告诉你是哪种情况。