Objective c 在nil NSNumber上使用compare是否总是返回OrderedName?
鉴于上述代码段,其中Objective c 在nil NSNumber上使用compare是否总是返回OrderedName?,objective-c,compare,nsnumber,Objective C,Compare,Nsnumber,鉴于上述代码段,其中badNum实际上是nil,如果语句保证永远不会被输入, NSNumber *badNum = 0; NSNumber *goodNum = @42; if ([badNum compare:goodNum] == NSOrderedAscending) // ... 本质上,我想知道是否每次使用-[NSNumber compare::时都必须进行nil检查,因此另一个问题是我是否需要使用以下代码来确保比较始终按其显示方式工作? NSNumber *badNum =
badNum
实际上是nil
,如果语句保证永远不会被输入,
NSNumber *badNum = 0;
NSNumber *goodNum = @42;
if ([badNum compare:goodNum] == NSOrderedAscending)
// ...
本质上,我想知道是否每次使用-[NSNumber compare::
时都必须进行nil
检查,因此另一个问题是我是否需要使用以下代码来确保比较始终按其显示方式工作?
NSNumber *badNum = 0;
NSNumber *goodNum = @42;
if ([badNum compare:goodNum] == NSOrderedAscending)
// ...
是的,只要苹果不更改当前定义为零的NSOrderedName,就可以保证:
if (badNum && goodNum && [badNum compare:goodNum] == NSOrderedAscending)
// ...
当向nil
发送compare:
消息时,您似乎会获得SensorDeredName
的原因是,当目标为nil
时,Objective-C为返回类型提供默认值。由于sensorderedsame
是0
,是默认值,因此当badNum
是nil
时,您保证会得到它,所以我必须始终执行nil
检查?男人…:/你需要的逻辑取决于你自己。根据您希望如何处理nil
值,您可能需要也可能不需要检查这些值是否为nil
值。@rmaddy可以在发送消息时提供示例比较:
与nil
NSNumber*
比较是否有益?如果您对数字进行排序,您希望nil
值出现在排序的开始、结尾,还是完全忽略?您对该问题的回答会影响需要编写if
语句的方式。这取决于您和应用程序的需要。相关: