将C++中的operator==转换成Objective-C

3

我正在将一些C++代码转换为ObjC。我正在查看的operator==()逐个比较其私有成员,并在它们全部为true时返回true。

在ObjC中,operator==()的等效实现是什么?

从浏览中,我看到在ObjC中:

  • -isEqual
  • -isEqualTo
  • -isLike
  • ==(内置的?不可覆盖?)
  • 是否还有其他方法?

这些方法的协议是什么?(深度或浅层比较等...?)我应该使用哪一个来替换比较所有成员的operator==()?


== 只会比较两个对象的指针,就是这么简单,你无法重写它。你必须创建自己的方法来比较你自己的类。 - TheAmateurProgrammer
1
这里有一些关于isEqual:hash的讨论:https://dev59.com/juo6XIcBkEYKwwoYTzJK - Monolo
@Monolo +1 针对那个有用的链接 - 谢谢 - kfmfe04
1个回答

4

isEqual: 是你想要重写的方法。此外,确保 hash 在两个相等的对象上返回相同的值。

实际上并没有比较的协议。对于你的类来说,做任何有意义的事情都可以。如果你在 operator==() 中比较了所有成员变量,那么这将是深度比较,是的,请使用 isEqual:


很遗憾没有比较协议,这样会导致很多不同的协议产生歧义和混淆。但是你的提议已经被接受了。 - kfmfe04

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接