我尝试了一些方法:
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/