在数组中添加元素。线程/模拟器问题?

时间:2014-04-13 15:24:14

标签: objective-c arrays xcode types ios-simulator

我正在尝试使用一个名为_operationArray的数组,其中存储了NSNumber。我想取数组的最后两个元素并将它们加在一起。在下面的代码中,endObject应该是数组中的最后一个元素空间,secondToEndObject应该是倒数第二个元素空间。然后我尝试将这两个元素一起添加。没有错误或警告但是当我尝试在模拟器中运行并按下按钮时,模拟器关闭并打开xcode并说出有关线程的信息(我不明白)。

- (IBAction)addition:(id)sender {

NSUInteger endObject = [_operationArray count];
NSUInteger secondToEndObject = [_operationArray count] - 2;
NSUInteger firstNumber =[[_operationArray objectAtIndex:endObject] integerValue] ;
NSUInteger secondNumber = [[_operationArray objectAtIndex:secondToEndObject] integerValue];
_theResult = [NSNumber numberWithInteger:((signed)(firstNumber + secondNumber))];

}

就像我说的那样,我真的不明白这个问题,所以如果有任何其他信息需要解决,请告诉我。感谢任何帮助,谢谢!

错误图片:http://www.image-maps.com/m/private/0/gmc4i1qcq1i7eihesndgdn5q92_screen-shot-2014-04-13-at-11.39.14-am.png

2 个答案:

答案 0 :(得分:1)

这样的东西似乎更接近你想要的东西。

- (IBAction)addition:(id)sender {
  // You said the array holds NSNumbers, so that's what you are getting out of it
  NSNumber *lastNumber = _operationArray.lastObject;
  NSNumber *penultimateNumber = _operationArray[_operationArray.count - 2];

  NSNumber *_theResult = @(lastNumber.integerValue + penultimateNumber.integerValue);
}

答案 1 :(得分:0)

[_operationArray count]错误,你正在使用基数0索引,这意味着最后一项是[_operationArray count]-1;

此外,您应该始终检查是否 [_operationArray count] >= 2以避免崩溃