私は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 {}
は大丈夫だと示唆している。だから、それは?
マットは、中括弧を使用しないように言っていませんでした:あなたはこの質問を見ることができます詳細については
。彼は、イヴァールを絶対に使用するのではなく、いつも物を使うように勧めました。それ以外に、あなたがivars(多くの人がやる)を使うことを選んだら、重複した質問の受け入れられた答えとあなたがリンクした答えの中で議論されているように、.mの '@ implementation 'の' {}'に入るべきです更新された質問。 – rmaddy
.mの '@interface()'(クラス拡張と呼ばれる)は、プライベートプロパティとプライベートプロトコル用です。 '@implementation {}'ブロックは私的なivars用です。 – rmaddy
意味があります。さて、プライベートプロパティとインスタンス変数の違いは何ですか?私は公共財産のようなものしかないという前提の下にあったので、私的財産と象牙は同等であると信じられました。 – chicobermuda