我是一个新手,试图获取一个免费软件应用程序,最后一次更新是在 2008 年,因为(显然)被程序员放弃了,他们没有回复我的电子邮件,并且都为当前的 MacOS 更新它并创建一个iPhone 版本。我想这将是一个漫长且有点噩梦般的过程,但我期待学习。
现在我正处于起步阶段,我正在查看原始的以下 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
我的问题是(questions are):为什么一个.h文件中有多个接口(interface)? @interface GeniusPair : NSObject
和 @interface GeniusPair (TextImportExport)
有什么区别? @interface
后跟括号中的内容与 @interface
后跟冒号有什么区别?
非常感谢您帮助解释。
最佳答案
它被称为类别。类别对于扩展类(当您没有它们的源代码,如 UIKit 或 Foundation 类)或将类的扩展/高级功能与其基方法分开(您遇到过这种情况)时非常有用。
当在 .m
文件的实现(而不是声明)上下文中使用时,它们还可以用于模拟私有(private)方法。
有关该主题的更多信息,请访问 Apple Developer. .
关于objective-c - 新手试图理解 .h 文件中的多个 @interface,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12570654/