isEqualTo:和isEqual之间的区别:

lbr*_*dnr 41 methods cocoa objective-c

这些方法之间的区别究竟是什么?

Chu*_*uck 38

isEqual: 是NSObject协议的一部分,用于比较对象.

isEqualTo:是Cocoa AppleScript支持基础结构的一部分(特别是NSComparisonMethods,它允许AppleScript比较Cocoa对象).它通常isEqual:与之相同,但如果您希望在内部和脚本中以不同的方式工作,则可以覆盖它.


jtb*_*des 6

isEqualTo:NSComparisonMethods非正式协议的一部分,该协议还包含类似isGreaterThan:和的方法isNotEqualTo:,并用于脚本支持.和:

如果发送到同一对象的isEqualTo:消息将返回YES,则NSObject提供的此方法的默认实现返回YES.

因此,当将此消息发送到NSObject(或任何不覆盖它的子类)时,您将获得与isEqual:您应该使用相同的行为isEqual:.

  • `isEqualTo:`的文档并没有说它等同于`isEqual:`; 它说它相当于将`isEqualTo:`发送给另一个对象.它实际上并没有承诺使用`isEqual:`,虽然我很确定它确实如此.(更安全的是直接使用`isEqual:`.)`isEqualTo:`不仅仅是"常用于脚本支持":整个协议*存在*用于脚本支持.它通常用于非脚本目的,其中`isEqual:`将是更合适的方法. (5认同)