在戳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
的情况?
答案 0 :(得分:8)
通常,是的,类别用于组织目的。但是在NSString
的情况下,主要使用它们,因为NSString
是一个类集群。因此,类别用于定义集群中类的其他方法(而不是原始方法)。
关于来自Mike Ash here的类集群的一篇很好的文章。