7

两种方法都返回相同的结果。当然,-[NSObject isEqual:]不比较对象的指针,它以某种方式检查内部字段或其他什么。那么使用究竟-[NSNumber isEqualToNumber:]来比较两个NSNumbers 有什么意义呢?

4

3 回答 3

9

文档

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

所以它处理 id equals 和 number 比较。

于 2012-12-09T00:30:33.730 回答
3

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

于 2012-12-09T00:59:42.673 回答
-2

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

NSNumber值相等的 s 具有相同的指针地址。

于 2012-12-09T00:30:07.763 回答