[__NSArrayM insertObject:atIndex:]:即使在检查为零之后,对象也不能为nil加注

时间:2014-07-14 07:35:25

标签: objective-c cocoa nsarray

在我的cocoa应用程序中,我正在将文件上传到我的服务器。我有status bar来显示文件上传的当前状态。当我点击状态栏时,它将显示当前上传文件的状态。为了显示当前状态,我将检索到的值作为对象添加到数组中。  在这里,我给出了将对象添加到数组的代码。

 if(temp1 != Nil)
      {
      [printComplete addObject:temp1];
      }

我的代码在多个点使用了相同类型的代码。但有时我甚至在检查了nil之后得到了以下错误:

-[__NSArrayM insertObject:atIndex:]: object cannot be nil

当我从Xcode /调试阶段运行此代码时,我无法得到此错误。当我将其作为应用程序运行时很少发生。任何人都可以提供解决此问题的解决方案。

1 个答案:

答案 0 :(得分:0)

好的,所以我最初的建议是尝试以下方法,因为OP正在测试与Nil而不是nil的平等:

if (temp1) {
    [printComplete addObject:temp1];
}

查看NSHiptser对nil/Nil的看法。

然而,事实证明它们实际上被定义为相同的东西,因此这不会成为问题的根源。

我仍然建议(风格上)将每种用途用于其预期用途。

这是关于这个主题的另一个有趣答案:https://stackoverflow.com/a/1843034/1716763

我会在这里留下这个答案,除非人们认为没有必要。