如何使用运算符 < 来比较对象或>在 Objective-C 中?
如何比较 Objective-C 中自定义类的两个对象?我尝试重载
- (NSComparisonResult)compare:(id)other;
方法。如果我手动调用该方法,这效果很好
if ([obj1 compare:obj2] == NSOrderedDescending) {
// do something
}
有什么方法可以这样做吗?
if (obj1 > obj2) {
// do something
}
或者我需要重载另一种方法吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是不可能的,因为 Objective C 没有运算符重载。您正在比较指针值。
This is not possible, since objective C doesn't have operator overloading. You are comparing pointer values.
实现这一目标的一种方法是,对于您的班级,您可以定义与所有有意义的比较的比较。
对于命名良好的函数,这与重载没有太大不同,尽管它会阻止您使用 >和<。尽管包含重载,但您编写的实际代码应该是相同的。
One way to achieve this is for your class you can define comparisons to everything that make sense to compare with.
With well-named functions this isn't terribly different than overloading although yes it prevents you from using > and <. The actual code you write should be identical though as if overloading were included.