我开发了一个简单的计算器 iPhone 应用程序。只是为了练习目的。我有一个 IBAction 方法来存储用户输入的数字。整个概念是计算器应用程序堆积待处理的操作,因此用户可以执行多个操作,屏幕显示结果如下:1 + 2 - 4 + 10 = X。所以我有两个 NSMutableArray 存储 NSNumber 数字和操作员动作。当用户单击操作员按钮时,会为新数字创建一个新的数组元素。当用户输入数字时,最后一个数组元素会自行更新,直到按下操作员按钮。
问题是每个数组元素都是零。当我设置它时,它在方法内部存储了正确的值,但是当该方法被执行并再次调用时,它只包含零而不是输入的数字。存在 NSNumber 对象,数组包含每个数字,但每个数字都是 0。
这是方法:
// Processing digit buttons
- (IBAction)clickDigit: (UIButton *) sender {
double currentNumber = [[numbers lastObject] doubleValue];
// Get the digit
double digit = sender.tag;
// Do nothing when the currentNumber and the digit both zero
if(currentNumber == 0 && digit == 0) {
return;
}
// When currentNumber is zero, override the value
if(currentNumber == 0) {
currentNumber = digit;
[numbers removeLastObject];
[numbers addObject: [NSNumber numberWithDouble: currentNumber ]];
// Else, add the digit to currentNumber
} else {
currentNumber = currentNumber * 10 + digit;
[numbers removeLastObject];
[numbers addObject: [NSNumber numberWithDouble: currentNumber ]];
}
// Update the screen
[self updateDisplay];
}
我不知道出了什么问题。有什么建议么?提前致谢
更新:事实证明,每次按下按钮后都会自动调用 clickClear 方法。它将值设置为零。我在评论部分链接了这篇文章下面的完整源代码。唯一的问题是:为什么调用这个方法?什么叫这种方法?
UPDATE2:在萨德的帮助下,我设法解决了这个问题。谢谢大家!:)