【发布时间】:2011-10-29 03:05:32
【问题描述】:
这些方法到底有什么区别?
【问题讨论】:
-
一些快速搜索会发现人们讨论过此类事情的类似主题 gin depth stackoverflow.com/questions/1112373/…
标签: objective-c cocoa methods
这些方法到底有什么区别?
【问题讨论】:
标签: objective-c cocoa methods
isEqualTo: 是NSComparisonMethods 非正式协议的一部分,该协议还包含isGreaterThan: 和isNotEqualTo: 等方法,用于脚本支持。并且:
如果发送到同一对象的 isEqualTo: 消息返回 YES,则 NSObject 提供的此方法的默认实现返回 YES。
因此,当将此消息发送到 NSObject(或任何不覆盖它的子类)时,您将获得与 isEqual: 相同的行为,但是,您应该改用 isEqual:。
【讨论】:
isEqualTo: 的文档并没有说它等同于isEqual:;它说这相当于将isEqualTo: 发送给另一个对象。它实际上并没有承诺使用isEqual:,尽管我很确定它确实如此。 (不过,直接使用isEqual: 更安全。)isEqualTo: 不仅仅是“通常用于脚本支持”:整个协议存在 用于脚本支持。它通常用于非脚本目的,其中isEqual: 是更合适的方法。
isEqual:。
-isEqualTo:。 ;) 虽然我认为这只是一个错字。
isEqual: 是 NSObject 协议的一部分,用于比较对象。
isEqualTo: 是 Cocoa AppleScript 支持基础设施的一部分(具体来说,NSComparisonMethods,它允许 AppleScript 比较 Cocoa 对象)。它通常与isEqual: 相同,但如果您希望相等在内部和脚本中以不同方式工作,则可以覆盖它。
【讨论】:
isEqual(to:),并且测试失败了,我花了一段时间才发现。