objective-c - 新手试图理解 .h 文件中的多个 @interface

标签 objective-c ios interface

我是一个新手,试图获取一个免费软件应用程序,最后一次更新是在 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/

相关文章:

ios - 找不到 CocoaLumberjack.h 文件?

iphone - 错误 "Application tried to push a nil view controller on target <UINavigationController: 0x498efa0>."是什么?

ios - 如何仅设置苹果 Logo 图像以使用苹果按钮登录

ios - UILabel - UIMenuController 菜单项的长按手势

ios - NSOperation 队列没有同时执行

java:从内部类内部访问局部变量looper;需要声明为final,但变量可能尚未初始化

iphone - 如何创建 "0000001"类型数字格式?

ios - 计算累积海拔增益给我奇怪的结果

java - 作为接口(interface)实现的抽象工厂模式

java - 如何在 Iterator.next() 中使用 NoSuchElementException?