-2

私が読んだObjectiveCの本では、著者は常に次のような実装でプロパティオブジェクトを使用しています。

(セッターとゲッターをオーバーライドしない限り、合成を使用しないことはわかっていますが、例としてのみ)

@synthesize suit, rank;

スタンフォードコースでは、@ synthesizeを使用する必要がある場合は、次のようにします。

@synthesize suit = _suit;

@synthesize rank = _rank;

少し混乱しました。_rankオブジェクトを取得するときに、オブジェクトをある値に設定するrankことですか?

はいの場合、その行:@synthesize rank = _rank;私を少し混乱させます...

いくつかの方向性を得たいと思います。tnx

4

1 に答える 1

4

@synthesize rank = _rank;

_rankこれは、バッキング インスタンス変数として呼び出される ivar を使用して、必要に応じてセッターおよび/またはゲッターを生成するようにコンパイラに指示します。必要に応じて ivar を作成し_rankます。[編集]、まだ存在しない場合を意味します。[/編集]

@synthesize rank;

これは、呼び出された ivar rank(プロパティ自体と同じ名前)を使用して、必要に応じてセッターおよび/またはゲッターを生成するようコンパイラーに指示します。

次に、LLVM4 では、@property を @synthesize するようコンパイラに明示的に要求せず、デフォルトでこれを実行するコンパイラに依存している場合、デフォルトで呼び出される ivar が作成_rankされます。

于 2013-03-10T02:51:31.000 に答える