6

我是一个新手,试图使用一个免费软件应用程序,最后一次更新是在 2008 年,并且因为(显然)被没有回复我的电子邮件的程序员抛弃了,并且既为当前的 MacOS 更新它,也为苹果手机。我想这将是一个漫长且有点噩梦的过程,但我期待学习。

现在我正处于起步阶段,我正在查看原始文件中的以下 GeniusPair.h 文件:

#import <Foundation/Foundation.h>

@class GeniusItem;
@class GeniusAssociation;

extern const int kGeniusPairDisabledImportance;
extern const int kGeniusPairMinimumImportance;
extern const int kGeniusPairNormalImportance;
extern const int kGeniusPairMaximumImportance;

@interface GeniusPair : NSObject <NSCoding, NSCopying> {
GeniusAssociation * _associationAB; //!< Stats for standard learning mode directional relationship. 
GeniusAssociation * _associationBA; //!< Stats for Jepardy style learning mode directional relationship.

NSMutableDictionary * _userDict;
}

+ (NSArray *) associationsForPairs:(NSArray *)pairs useAB:(BOOL)useAB useBA:(BOOL)useBA;

- (id) initWithItemA:(GeniusItem *)itemA itemB:(GeniusItem *)itemB userDict:(NSMutableDictionary *)userDict;

//various other methods declared

@end


@interface GeniusPair (GeniusDocumentAdditions)

- (BOOL) disabled;
//various other methods declared

@end


@interface GeniusPair (TextImportExport)

- (NSString *) tabularTextByOrder:(NSArray *)keyPaths;
//various other methods declared

@end

我的问题是(问题是):为什么 .h 文件中有多个接口?@interface GeniusPair : NSObject和有什么区别@interface GeniusPair (TextImportExport)@interface在括号中加上后跟的东西与@interface后跟冒号的作用是什么?

非常感谢您的帮助解释。

4

1 回答 1

8

它被称为一个类别。类别对于扩展类(当您没有它们的源代码,如 UIKit 或 Foundation 类时)或将类的扩展/高级功能与其基方法分离(这是您遇到的情况)很有用。

当在文件的实现(而不是声明)上下文中使用时,它们也可以用于模拟私有方法.m

更多关于Apple Developer 的主题。.

于 2012-09-24T18:26:12.930 回答