问题是每个数组元素都为零。在方法内部,它在我设置时存储了corrent值,但是当执行该方法并再次调用时,它只会为零而不是输入的数字。 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];
}
我不知道出了什么问题。有什么建议? 提前致谢
UPDATE :事实证明,每次按下按钮后都会自动调用clickClear方法。它将值设置为零。我在评论部分链接了这篇文章下面的完整源代码。唯一的问题是:为什么这个方法叫?什么叫这种方法?
UPDATE2 :在Saad的帮助下,我设法解决了这个问题。谢谢大家! :)
答案 0 :(得分:1)
您遇到此问题的唯一可能方法是始终sender.tag == 0
。所以你一定要检查一下。我的观点是,没有其他可能产生这些症状的情况,所以必须如此。
答案 1 :(得分:0)
好的,
这里有一件事是首先检查发件人的标签,无论是通过braekpoint还是通过NSLog点击数字方法,我猜标签永远不会超过零,因此数组中的最后一个对象将始终为零,进一步,放置nslog或者在将对象添加到数组的所有位置上的断点。
界面中的。
@property(nonatomic, retain) NSMutableArray* numberArray;
在实施中,
@synthesize numberArray = _numberArray;
in dealloc
[_numberArray release];
好吧现在接下来就是在init中创建一个数组
NSMutableArray* arr = [NSMutableArray alloc] init];
self.numberArray = arr;
[arr release];
[self.numberArray addObject:[NSNumber numberWithDouble:0]];