ios – Objective-C compareTo:

前端之家收集整理的这篇文章主要介绍了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中,有时候它们是根本的.

原文链接:https://www.f2er.com/iOS/329136.html

猜你在找的iOS相关文章