【问题标题】:Why Declare a Category in Same Header File as Class Declaration为什么在与类声明相同的头文件中声明一个类别
【发布时间】:2013-05-27 16:53:38
【问题描述】:

在查看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 的情况?

【问题讨论】:

    标签: objective-c


    【解决方案1】:

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

    Mike Ash here 写了一篇关于类集群的精彩文章。

    【讨论】:

      猜你喜欢
      • 2021-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多