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 に答える