为什么在同一个头文件中声明类别作为类声明

时间:2013-05-31 19:30:40

标签: objective-c

在戳Foundation框架(例如NSString.h)中的某些头文件后,我注意到NSString的声明如下:

@interface NSString : NSObject <NSCopying, NSMutableCopying, NSSecureCoding>

/* NSString primitive (funnel) methods. A minimal subclass of NSString just needs to implement these, although we also recommend getCharacters:range:. See below for the other methods. */
- (NSUInteger)length;           
- (unichar)characterAtIndex:(NSUInteger)index;

@end

其余的方法在类别中声明,而类别又在同一个头文件中声明。

阅读this answer后,其含义似乎主要是用于组织代码。

在类声明的同一标头中声明类别是否有一个好处(除了方法的逻辑分组),特别是在隐藏实现的情况下,如NSString的情况?

1 个答案:

答案 0 :(得分:8)

通常,是的,类别用于组织目的。但是在NSString的情况下,主要使用它们,因为NSString是一个类集群。因此,类别用于定义集群中类的其他方法(而不是原始方法)。

关于来自Mike Ash here的类集群的一篇很好的文章。