2013-05-31 211 views
5

周围的一些头文件戳在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的情况?

回答

8

一般来说,是的,类别用于组织目的。但在NSString的情况下主要使用它们,因为NSString是类集群。因此,类别用于定义群集中类的附加方法(与原始方法相对)。

关于来自Mike Ash here的班级集群有一个很好的写作。

相关问题