我正在尝试创建一个调试类菜单,在其中我将一个变量传递给一个函数,它创建了调整变量的按钮和一个要显示的标签。我试图将变量存储在一个数组中,如下所示:
(void)init
{
int variableArray[10];
}
-(void)addDebugVariable:(NSString*)name value:(int*)variable
{
variableArray[0] = variable;
}
-(void)plusButtonTapped:(CCMenuItem*)button
{
int index = (int)[button tag];
debugVariables[index]++;
[debugValueLabels[index] setString:[NSString stringWithFormat:@"%f", debugVariables[index]]];
}
我遇到过这个方法的2个问题。当我按加号按钮时,变量增加4而不是1.我也无法将属性变量传递给我的函数(例如:self.scale,self.gravity)。
这是实现调试类的正确方法吗?如何在按下按钮时正确存储变量的地址并从另一个类修改它。
答案 0 :(得分:2)
您发布的代码无法正常运行,并且对于任何人都无法帮助您而感到困惑。看起来你只是张贴点点滴滴。
你的init方法定义了一个局部变量variableArray,它会在init例程结束后立即停止存在。
然后你有另一个方法addDebugVariable,它将一个POINTER带到一个int,并将它分配给另一个也被称为variableArray的变量的索引0。那个变量阵列定义在哪里?它是你班级的实例变量吗?如果你想为它分配一个整数值,你应该使用这样的代码:
variableArray[0] = *variable;
addDebugVariable方法接受一个你从不做任何事情的字符串。这是为了什么?
然后在你的第三个方法,plusButtonTapped,改变你从未提到的另一个数组变量debugVariables。你说值增加4.这通常意味着你正在处理指针变量而不是标量变量。如何声明debugVariables?
最后,在plusButtonTapped中,您在格式字符串中使用“%f”。那是花车。我以为你在处理整数数组?