Apple标头包含多个类别

Mar*_*ell 3 cocoa objective-c categories

在阅读一些Apple Header文件时,我注意到他们使用类别为同一个对象声明了多个接口.

例如: NSDictionary.h

@interface NSDictionary : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>

//methods

@end

@interface NSDictionary (NSExtendedDictionary)

//methods

@end

@interface NSDictionary (NSDictionaryCreation)

//methods

@end
Run Code Online (Sandbox Code Playgroud)

这纯粹是一种帮助组织代码的方法吗?作为用户没有区别,所有类别中的所有方法在使用时都会出现NSDictionary.

这有其他有用的结果吗?

Die*_*Epp 6

nielsbot有正确的想法,但这些类别有一个特定的技术原因.您可以将实现放在单独的文件中.(从技术上讲,不同的翻译单位.)

档案1:

@implementation NSDictionary
...
@end
Run Code Online (Sandbox Code Playgroud)

文件2:

@implementation NSDictionary (NSExtendedDictionary)
...
@end
Run Code Online (Sandbox Code Playgroud)

档案3:

@implementation NSDictionary (NSDictionaryCreation)
...
@end
Run Code Online (Sandbox Code Playgroud)