【问题标题】:What is the difference in the usage of the methods firstObject vs objectAtIndex:0?firstObject 与 objectAtIndex:0 方法的用法有什么区别?
【发布时间】:2014-02-21 01:17:51
【问题描述】:

今天我使用 firstObject 和 objectAtIndex:0 进行了测试。如果数组的大小为 0,则使用前者不会导致崩溃,而使用后者会导致崩溃。所以我认为使用 firstObject 比使用 objectAtIndex:0 更好。但是在 objectAtIndex:0 上使用 firstObject 是否有缺陷?

我也一直在阅读NSArray documentation,我很惊讶并想知道他们为什么没有在文档中提到这个事实。

【问题讨论】:

  • 如果您只需要第零个对象,firstObject 就可以了。检查变量索引并在其为零时使用firstObject,否则使用objectAtIndex,这将是愚蠢的。
  • 在我们的代码中,我们有许多使用 objectAtIndex:0 来访问对象的实例。通常我们只需要任何对象即可

标签: ios nsarray


【解决方案1】:

有一个区别。如果没有,使用 firstObject 返回 nil。如果那里没有对象,使用objectAtIndex:0 会使您的应用程序崩溃(抛出异常)。从用户体验的角度来看,强烈反对崩溃,因此使用firstObject 更安全。

但是最大的陷阱:firstObject 从 iOS 4 开始就可用,但在 iOS 7 之前是私有 API。

【讨论】:

  • 数组不是您期望的大小是逻辑错误的结果。崩溃通常比试图继续进行更安全。
  • @ChrisDevereux 好点。我会根据情况分析我们的代码,看哪条消息适合使用
  • 是的,但至少你可以检查 nil 而不是让应用程序崩溃,这最终对普通用户来说看起来很糟糕......
  • @vborra 从用户的角度来看,我认为应用程序不崩溃会更好。也许我会添加一个逻辑来检查结果是否为 nil 以避免错误。
猜你喜欢
  • 2022-07-27
  • 2014-05-09
  • 1970-01-01
  • 2017-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多