4

Xcode 4.4 のリリース ノートを読んでいて、次のことに気付きました。

LLVM 4.0 コンパイラ

Xcode には、次の新しい Objective-C 言語機能を含む、Apple LLVM コンパイラ バージョン 4.0 が含まれるようになりました。

  • デフォルトの @synthesize: 実装されていない場合、@property を自動的に合成します

この機能に興味があります。それはどのように機能しますか?を削除してみましたが@synthesize、うまくいきません。

4

2 に答える 2

7

実際に動作します。プロジェクトとターゲット設定でコンパイラが LLVM 4.0 に設定されていることを確認してください。@synthesize 行を削除すると、次の 2 つの方法でアクセスできます。

self.myProperty を使用してアクセサーを介して、または _myProperty を使用してそれぞれのインスタンス変数を介して (アンダーバーは自動的に追加されます)。

于 2012-07-26T13:59:40.467 に答える
1

それだけではうまくいかないケースが多いです。これらはすべて、ここで例外として概説されています。

http://useyourloaf.com/blog/2012/08/01/property-synthesis-with-xcode-4-dot-4.html

しかし、私にとって最も重要なものは、

デフォルト以外のゲッターとセッターを使用した readwrite プロパティ

これは、プロパティが一般向けの ivars でない限り、@synthesize を含める必要があることを意味します。別の言い方をすれば、カプセル化をうまく使ってセッターとゲッターを埋めていたら、これは使えません。

後の注:ここで指定された条件についてはよくわかりませんが、遭遇するほぼすべての状況に対して自動合成された ivar があることがわかりました。

于 2012-08-15T20:31:11.370 に答える