2

私は iOS 開発のための iTunesU コースで素晴らしい Paul Haggerty を見ていました (なぜなら、基本を一新する必要がないのは誰でしょうか?) そして、彼は私が気付いていないことを言いました:

「アンダーバー (_ 記号) 変数にアクセスすることはありません」

彼はその後、@property を使用して変数を宣言するときに@synthesize variable = _variable、セッターとゲッターだけでなく、コンパイラによって舞台裏で生成されるコードについても説明しました。基本的に、そのコードはアプリに表示されるべきではありません。

これまでに作成したすべての iOS アプリで、常に@propertyヘッダー ファイルで変数を宣言し@synthesize VARIABLE_NAME = _VARIABLE_NAME;、講義を見て以来@synthesize、自分のコードで を使用する必要があるかどうかについて混乱しています。

プロパティ宣言だけを使用する必要がありますか? コードで合成宣言を使用すると、どのような違いがありますか?

ハガティさんは使わないのに、どうして私が使うの?(彼が一種のiOSの半神であることを考えると). 今までやってきたことをするのは悪い形だと非常に感じています。

その問題を明確にしたい人はいますか?

4

4 に答える 4

7

Xcode 4.0 DeveloperPreview4リリースノート。プロパティのデフォルトの自動合成を追加します(iOSおよび64ビットOS X)。@synthesize宣言されたプロパティのアクセサーを合成するために、コンパイラーの実装セクションにディレクティブは必要ありません。

それで

@synthesize ivar = _ivar;

省略しても全く同じです。

于 2013-02-02T05:12:10.697 に答える
2

合成する必要はもうありません。これは、今年のWWDCセッションでも取り上げられました。プロパティを使用するだけです。

于 2013-02-02T05:11:36.577 に答える
2

「@synthesizeVARIABLE_NAME=_VARIABLE_NAME」を含めない場合は、何も追加しないとコンパイラーが自動的に追加するため、実際に含めた場合とまったく同じように機能します。

于 2013-02-02T05:11:39.167 に答える
2

Xcode 4.5 以降で。IDE が@synthesizeステートメントを作成します。

ステートメントは、あなたのためにandを@synthesize書くだけです。settergetter

つまり、_variable_nameインスタント変数です。

は、デフォルトvariable_nameで の値を返す唯一のメソッドです。_variable_name

variable = <Statement or value>. its calling theデフォルトでsetVarable_Name _variable_name`を使用method to set theする場合。

それが役に立ったことを願っています。

于 2013-02-02T05:16:31.640 に答える