2012-01-23 9 views
0

私はObj-Cを勉強しており、3行目から5行目のコードの目的をよく理解していません。Objective-Cでは@interfaceの意味は何ですか?

説明できますか?

1. myClassA.m 
2. #import myClassB 
3. @interface myClassA() 
4. -(void) methodA 
5. @end 
6. @implementation myClassA 
7. mymethodA { 
     NSLog{@"this is mymethodA"); 
    } 

これらについていくつかの参考文献がある場合は、私自身でそれを検討してください。

+0

基本的に、@interface構築は、クラスが実行できる宣言であり、他のクラスから見えるので、他のクラスはメソッドを呼び出してこのクラスのプロパティにアクセスできます。 –

+0

[@interfaceと@protocol explanation?]の可能な複製?(http://stackoverflow.com/questions/1679145/interface-and-protocol-explanation) –

+0

-1コードに構文エラーがあります。そして、このように '@interface'について尋ねると、混乱し、混乱した答えが得られます。 –

答えて

2

:.hのヘッダファイルで定義された

スタッフ(メソッドやプロパティ)は、公開されて.mインプリメンテーションファイルの@interfaceで定義されたものはprivateです。

Hegartyの講義は、iTunes Universityで非常に最新かつ無料で利用可能です。

+0

私は彼の講義を通して行ったが、どの講義がこのトピックでカバーされているのかを正確に覚えていなかった。それがどの講義か教えていただけますか? – tonytran

-1

3行目は、クラスインタフェースの先頭を示します。これはクラスに含まれるメソッドを宣言しますが、その機能については説明しません。 4行目は実際にあなたのクラスにあるメソッドの数に応じて、N行目まで拡張できます。

次に、行6と8(@end)の間に、それらのメソッドの実際の動作の定義を配置します。こうすることで、ユーザーはmyClassBでやっているようにヘッダーをインポートし、クラスが公開する関数の完全なリストを取得できます。

+0

-1:3行目はインタフェースではなくクラス拡張を宣言します。 –

-1

3〜5行目は、クラスへのインターフェイス(C++のヘッダーファイルのようなもの)を指定しています。行の先頭にある - は、メソッドが(クラスとは対照的に)インスタンスメソッドであることを意味します。

+0

あなたの助けをありがとう – tonytran

+0

-1:行3は、クラスインタフェースではなくクラス拡張を宣言します。これは通常、ヘッダーではなく実装ファイルの一部です。 –

0

Joshによると、クラスインタフェースは、クラスに含まれるメソッドを宣言します。 myClass.hがインクルードされていても、他のファイルでは見えないという意味で、内部のメソッドを「プライベート」と考えることができます。

明確にするために、myClass.hに入れることを選択したメソッド宣言は、myClass.hを含む他のファイルにアクセスできます。クラスインタフェースに配置するメソッドの宣言は、myClass.mによってのみアクセスできます。

一般に、可能な限り非表示にすることをお勧めします。したがって、myClass.mのメソッドをクラスインターフェイス内に配置することをお勧めします。 iPadとiPhoneのプログラミングは、単純に(ここで言い換え)として、それを述べた上で講義、ジョシュの答え、スタンフォード大学のPaul Hegartyに追加

+0

あなたの答えはありがとう、ありがとうございますのでプライベートメソッドのように見えます.... – tonytran

+0

-1:Objective-Cの*クラス拡張*機能を説明していますが、その名前は言及していません。代わりに、あなたは混乱している "class interface"を使ってそれを参照します。 –

関連する問題