Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在数组中添加元素。线程/模拟器问题?_Objective C_Arrays_Xcode_Types_Ios Simulator - Fatal编程技术网

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

Objective c 在数组中添加元素。线程/模拟器问题?,objective-c,arrays,xcode,types,ios-simulator,Objective C,Arrays,Xcode,Types,Ios Simulator,我试图获取一个名为_operationArray的数组,该数组中存储了NSNumbers。我想获取数组的最后两个元素并将它们相加。在下面的代码中,endObject应该是数组中的最后一个元素空间,secondToEndObject应该是倒数第二个元素空间。然后我尝试将这两个元素添加到一起。没有错误或警告,但当我尝试在模拟器中运行它并按下按钮时,模拟器关闭,xcode打开,并显示有关线程的内容(我不理解) } 就像我说的,我真的不理解这个问题,所以如果需要任何其他信息来解决这个问题,请让我知道。非

我试图获取一个名为_operationArray的数组,该数组中存储了NSNumbers。我想获取数组的最后两个元素并将它们相加。在下面的代码中,endObject应该是数组中的最后一个元素空间,secondToEndObject应该是倒数第二个元素空间。然后我尝试将这两个元素添加到一起。没有错误或警告,但当我尝试在模拟器中运行它并按下按钮时,模拟器关闭,xcode打开,并显示有关线程的内容(我不理解)

}

就像我说的,我真的不理解这个问题,所以如果需要任何其他信息来解决这个问题,请让我知道。非常感谢您的帮助,谢谢


错误图像:

[\u operationArray count]
错误,您使用的是以0为基数的索引,这意味着最后一项是
[\u operationArray count]-1

你也应该经常检查
[\u operationArray count]>=2
为了避免崩溃

类似的事情似乎更接近您想要的

- (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);
}

关于崩溃,您可能在主线程中获得了EXC错误访问,这意味着您正在读取/访问一个单元化内存块非常感谢,但这似乎并没有解决问题。莱昂纳多,我如何修复这个EXC错误访问?你确定数组中有NSNumber*指针吗?在获取对象之前放置一个断点并检查它。好的,我正在添加断点和if语句来检查这一点,谢谢!@Leonardo Bernardini指出的两个问题(索引和检查是否至少有2个元素)已更正。但是,请显示错误消息(关于线程)。如果您无法复制/粘贴它们,请查看如何在Mac上截图。好的,在中间底部的“框”上,单击蓝色面板附近的灰色面板,您应该能够看到记录的错误。出于好奇,您的模拟器上是否运行任何程序?几乎不知道你是否需要重新安装它…请查看以了解如何使用调试器。如果没有看到关于崩溃或错误的更多信息,根据你发布的原始代码,很难让任何人知道,似乎你可能对Objective-C的某些方面感到困惑,因此,问题可能来自此方法之外的某个地方。@user3527434请尝试添加异常断点。这样,您将看到代码崩溃的确切位置。
- (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);
}