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

Mik*_*e D 5 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
Run Code Online (Sandbox Code Playgroud)

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

在阅读了这个答案之后,暗示似乎主要是为了组织代码.

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

Wai*_*ain 8

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

有一个关于迈克灰类簇一个很好的写了这里.