ios – Objective-C compareTo:

有没有一个比较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 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...