【发布时间】:2015-09-16 15:22:04
【问题描述】:
NSNumber *badNum = 0;
NSNumber *goodNum = @42;
if ([badNum compare:goodNum] == NSOrderedAscending)
// ...
鉴于上面的 sn-p,其中badNum 实际上是nil,if 语句是否保证永远不会被输入?
基本上,我想知道每次使用-[NSNumber compare:] 时是否必须检查nil,所以另一个问题是我是否需要使用以下代码来确保比较始终如其所示?
if (badNum && goodNum && [badNum compare:goodNum] == NSOrderedAscending)
// ...
【问题讨论】:
-
您需要的逻辑由您决定。您可能需要也可能不需要检查这些值是否为
nil,具体取决于您希望如何处理nil值。 -
@rmaddy 你能提供一些例子,当将
compare:发送给nilNSNumber*是有益的吗? -
如果您正在对数字进行排序,您希望
nil值出现在排序的开头、结尾还是完全忽略?您对此的回答会影响if语句的编写方式。这取决于您和您的应用的需求。
标签: objective-c compare nsnumber