ios – Objective-C compareTo:

ios – Objective-C compareTo:,第1张

概述有没有一个比较Objective-C中的两个对象的标准机制? 我知道isEqual方法,但我并不是在寻找完全相同的方式,而是比较少于/多于/等于某种比较. 在Java中,我们有compareTo:这样做,Objective-C中有什么吗? 在Objective-C中,没有用于比较的标准方案,如可比较的< T>接口在Java中,但是来自Foundation框架的一些类定义了一个compare:方法. 有没有一个比较Objective-C中的两个对象的标准机制?

我知道isEqual方法,但我并不是在寻找完全相同的方式,而是比较少于/多于/等于某种比较.

在Java中,我们有compareto:这样做,Objective-C中有什么吗?

解决方法 在Objective-C中,没有用于比较的标准方案,如可比较的< T>接口在Java中,但是来自Foundation框架的一些类定义了一个compare:方法.

NSStringNSNumber是一些例子.

如果要为自定义类提供自己的比较方法,我建议您遵守约定并提供具有以下签名的方法

- (NSComparisonResult)compare:(MyClass *)object;

NSComparisonResult是一个定义如下的枚举

enum {   NSOrderedAscending = -1,NSOrderedSame,NSOrderedDescending};typedef NSInteger NSComparisonResult;

NSOrderedAscending意味着左 *** 作数小于正确的 *** 作数(并从中获得其他 *** 作数).

注意

值得强调的是,Objective-C和密切相关的基础框架是建立在公约之上的.它们不仅仅是一种惯用的写作方式,有时候执行依赖于它们.例如,如果您在不指定自定义选择器的情况下实现NSSortDescriptor,则默认实现将在对象上调用compare:. (以DavID Ronnqvist为例)

另一个值得注意的例子是方法的命名约定.从init开始的实例方法预期返回一个具有1个保留计数的对象.这是一个非常强大的惯例,随着ARC的到来,has been formalized和内置于编译器中.

包装:约定总是重要的.在Objective-C中,有时候它们是根本的.

总结

以上是内存溢出为你收集整理的ios – Objective-C compareTo:全部内容,希望文章能够帮你解决ios – Objective-C compareTo:所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1095339.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存