我正在将一些C++代码转换为ObjC。我正在查看的operator==()逐个比较其私有成员,并在它们全部为true时返回true。
在ObjC中,operator==()的等效实现是什么?
从浏览中,我看到在ObjC中:
- -isEqual
- -isEqualTo
- -isLike
- ==(内置的?不可覆盖?)
- 是否还有其他方法?
这些方法的协议是什么?(深度或浅层比较等...?)我应该使用哪一个来替换比较所有成员的operator==()?
我正在将一些C++代码转换为ObjC。我正在查看的operator==()逐个比较其私有成员,并在它们全部为true时返回true。
在ObjC中,operator==()的等效实现是什么?
从浏览中,我看到在ObjC中:
这些方法的协议是什么?(深度或浅层比较等...?)我应该使用哪一个来替换比较所有成员的operator==()?
isEqual:
是你想要重写的方法。此外,确保 hash
在两个相等的对象上返回相同的值。
实际上并没有比较的协议。对于你的类来说,做任何有意义的事情都可以。如果你在 operator==()
中比较了所有成员变量,那么这将是深度比较,是的,请使用 isEqual:
。
==
只会比较两个对象的指针,就是这么简单,你无法重写它。你必须创建自己的方法来比较你自己的类。 - TheAmateurProgrammerisEqual:
和hash
的讨论:https://dev59.com/juo6XIcBkEYKwwoYTzJK - Monolo