2016-05-02 10 views
1

私はSwiftから来るObjective-Cの初心者です。 2つの異なる@interfaceのインスタンスがあり、私がivarsを宣言できるようです。@interfaceと@implementationの相違点の中かっこ。

// Implementation file 
@interface ViewController() 
// declare instance variables 
@end 

@implementation ViewController 

@end 

EDIT:私が学んでいた私は、このような、私の実装ファイルに追加することができます

// Header file 
@interface ViewController : UIViewController 
{ 
    // declare instance variables 
} 

@end 

別:このような私のヘッダファイルでは、一つ.hファイルの私的なivarsを宣言するように教えてくれました。私の混乱は、.h(旧式)と.m(新しい、優先する方法)で宣言されたイナールを見ることから生じた。ここでは、(...今のところ)私が学んだことです:

// .h 
    @interface SomeClass : UIViewController 

    @property (nonatomic, assign) BOOL someBool; 
     // declare other properties, which will all be public 
    @end 

// .m 
    @interface SomeClass() <UITextFieldDelegate> 
     // what do I declare here?... 
    @end 

    @implementation SomeClass { 
     // ...and what do I declare here? 
    } 

    // method implementations 

    @end 

をしかし、私はまだ私の.mの@interface@implementation中括弧の間の差にと混同しています。 @mattは中括弧を使わないと言ったが、@ rmaddyの答えhereは、@implementation SomeClass {}は大丈夫だと示唆している。だから、それは?

+2

マットは、中括弧を使用しないように言っていませんでした:あなたはこの質問を見ることができます詳細については

。彼は、イヴァールを絶対に使用するのではなく、いつも物を使うように勧めました。それ以外に、あなたがivars(多くの人がやる)を使うことを選んだら、重複した質問の受け入れられた答えとあなたがリンクした答えの中で議論されているように、.mの '@ implementation 'の' {}'に入るべきです更新された質問。 – rmaddy

+2

.mの '@interface()'(クラス拡張と呼ばれる)は、プライベートプロパティとプライベートプロトコル用です。 '@implementation {}'ブロックは私的なivars用です。 – rmaddy

+0

意味があります。さて、プライベートプロパティとインスタンス変数の違いは何ですか?私は公共財産のようなものしかないという前提の下にあったので、私的財産と象牙は同等であると信じられました。 – chicobermuda

答えて

2

公開してもよろしいですか?次に.hファイルに書き込みます。

他のクラスに表示させたくない場合、つまりプライベートにしてそのクラス自身だけに表示したい場合は、.mファイルに書き込みます。 Where to put iVars in "modern" Objective-C?

+0

私の '.h'ファイルの場合、中括弧で何を宣言しますか?括弧の外側はすべて公開されているのに対し、括弧はカプセル化の意味を約束するようです。私はivarsが両方の方法で宣言したのを見たように感じる。 – chicobermuda

+1

ivarsは決して公開するべきではありません。 – rmaddy

+0

@dperkこのhttp://stackoverflow.com/questions/2182439/how-to-access-public-instance-variable-from-another-class-in-objective-cを参照してください。しかし、rmaddyが言及したように、あなたは公的なイナールを使用してはいけません。また、私が答えで共有したリンクもあなたの質問に答えてくれます。 http://stackoverflow.com/questions/23652665/static-const-vs-extern-constおよびhttp://stackoverflow.com/questions/7642304/objective-c-static-extern-public-variablesも参照してください。うまくいけば、彼らはすべてあなたがよりよく理解するのを手助けします – Honey

関連する問題