- [NSObject isEqual:]和 - [NSNumber isEqualToNumber:]:有什么区别?

时间:2012-12-09 00:22:51

标签: objective-c

两种方法都返回相同的结果。当然,-[NSObject isEqual:]不会比较对象的指针,它会以某种方式检查内部字段或其他内容。那么准确地使用-[NSNumber isEqualToNumber:]来比较两个NSNumber s?

是什么意思

3 个答案:

答案 0 :(得分:8)

来自docs

  

如果两个NSNumber对象具有相同的ID,则它们被视为相等   值或它们是否具有等价值(由...确定)   比较:方法)。   这种方法比比较更有效:如果你知道这两种方法   对象是数字。

因此它处理id equals和数字比较。

答案 1 :(得分:3)

它们本质上是相同的,尽管isEqual必须对传入的对象的类进行类型检查.isEqualToNumber在编译时进行类型检查,这在可能的情况下会更好。

答案 2 :(得分:-2)

-[NSObject isEqual:]检查两个对象是否具有指针地址和散列,-[NSNumber isEqualToNumber:]检查值是否相同。

具有相同值的

NSNumber具有相同的指针地址。