objective-c - Objective-C 是否使用短路评估?

标签 objective-c short-circuiting

我尝试了一些方法:

if(myString != nil && myString.length) { ... }

得到:

-[NSNull length]: 无法识别的选择器发送到实例

Objective-C 不会在第一个条件失败后短路吗?

最佳答案

Objective-C 确实支持短路求值,就像 C 一样。

在您的示例中,myString 似乎是 NSNull 而不是 nil,因此 myString != nil 是是的。

NSNull是一个单例,用于表示只允许对象的nil,例如在 NSArray 中。

顺便说一句,通常人们会写 if (!myString && myString.length == 0)。与 nil 相比非常难看。另外,我将长度与 0 进行比较。这似乎更清楚。

关于objective-c - Objective-C 是否使用短路评估?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2060741/

相关文章:

ios - 为什么 SKSpriteNode 不响应 applyForce 或 applyImpulse?

objective-c - mount_smbfs 上出现身份验证错误

ios - 如何创建帮助覆盖图,iOS

c++ - if 语句 - 短路评估与可读性

javascript - 为什么 `false && true || true` 评估为真?

objective-c - 在我滚动之前,数据不会加载到 UITableView 中

iphone - TableView 拉动刷新添加到 View 底部

c - 为什么这个函数不会陷入无限循环?

c - () 的优先级最高,为什么会短路?

language-agnostic - 所有编程语言都有 bool 短路求值吗?