具体的には@interface
ヘッダーファイルのセクションを保持する必要がありますか?ヘッダーファイルの@interfaceセクションは何ですか?
例からは、インスタンス変数を宣言するのに使用されているようです。アクセサやその他の方法は、その外にあるようです。クラスを宣言し、カテゴリを宣言:
具体的には@interface
ヘッダーファイルのセクションを保持する必要がありますか?ヘッダーファイルの@interfaceセクションは何ですか?
例からは、インスタンス変数を宣言するのに使用されているようです。アクセサやその他の方法は、その外にあるようです。クラスを宣言し、カテゴリを宣言:
@interface
は、少なくとも2つのコンテキストを持って明確にしてください。クラス宣言は、(括弧のものはオプションである)以下のようになります。
@interface Class [: Superclass]
{
[fields]
}
[methods]
@end
カテゴリ宣言はほぼ同じに見えますが、何のフィールドゾーンがありません:だから
@interface Class (CategoryName)
[methods]
@end
を、@interface
ライン必見クラス宣言の場合は中カッコが続き、そのクラスのフィールドは中に囲まれます。中カッコの後にメソッドを配置します。ドキュメントから
ちょっと注意してください。中カッコはオプションで、フィールドを定義する場合にのみ必要です。また、クラス拡張でivarsを定義できるようになりました(あなたが逃した3番目のケース)。 –
すばらしいコメント。ありがとうございました – JAM
:
インターフェース・ファイルは、他のObjective-Cコードからクラスを使用することが必要なすべての情報を保持するソースコードで使用することができる新しいクラスを宣言する。第1に、ファイルは、クラス階層におけるクラスの位置をプログラマに明らかにする。これは、どのクラスがスーパークラスであるかを正確に定義することによって行われる。第2に、サブクラスを作成するときにどのような変数が継承されるかをプログラマに知らせます。最後に、インタフェースファイルは、クラスオブジェクトおよびクラスのインスタンスに送信可能なメッセージの他のソフトウェアエンティティに通知することができる。
メソッドは '@interface'宣言の外にはありません。宣言は '@interface ... @end'なので、__inside__です。また、 '@interface'はヘッダファイルだけに限定されません。 –