2017-04-09 9 views
1

私はSDKを書いており、パブリックAPIを持つMyClass.hというヘッダーを持っています。私のプロジェクトでpublicメソッドを公開する方法はありますが、public APIでは公開されません。

一部のメソッドは- (void)foo;のようなヘッダーには書き込まれないため、ユーザーは使用できません。

しかし私の他のクラスはfooの方法を使用していますが、MyClass.hに登録されていないので使用できません。だから私が書いたfooメソッドをコールする各クラスの

@interface MyClass() 
- (void) foo; 
@end 

は、それが法的ですか?私は3つの他のクラスで同じものを書く必要があり、それは奇妙に見えます。

は内部使用のためのメソッドを公開しますが、公開APIは公開しません。

答えて

2

新しいファイルを作成します。 "Objective-C File"テンプレートを使用してください:

choosing a file template "ファイル"に「プロジェクト」と入力します。 「ファイルタイプ」で「拡張子」を選択します。 「クラス」、「MyClassの」(またはものは何でもあなたの本当のクラス名がある)を入力するために:

setting the file options

XcodeはMyClass_Project.hという名前の新しいファイルを作成します。これらのいずれかの方法を使用する必要があるすべて.mファイルに、次に

#import "MyClass.h" 

@interface MyClass() 

- (void)foo; 

@end 

、およびMyClass.mで、MyClass_Project.hをインポートする:このファイルでは、プロジェクト専用のメソッドを宣言します。 MyClass_Project.hをインポートするファイルは、MyClass.hもインポートする必要はありません。

+0

なぜMyClass_Project.hを 'MyClass.m'にインポートする必要がありますか? – snaggs

+0

コンパイラがメソッドのシグネチャが一致し、クラスが 'MyClass_Project.h'で宣言されているすべてのメソッドを定義していることを確認します。 –

関連する問題