5

在浏览了Foundation框架中的一些头文件(NSString.h例如)之后,我注意到 for 的声明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

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

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

在与类声明相同的标头中声明类别是否有好处(除了方法的逻辑分组),尤其是在隐藏实现的情况下,例如NSString

4

1 回答 1

8

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

Mike Ash在这里写了一篇关于类集群的文章。

于 2013-05-31T19:48:42.793 回答