2

私のiPhoneアプリでは、xCode v3.2.3で定期的にこれを行います:

  1. *.h ファイルで BOOL 変数を宣言する
  2. 同じ *.h ファイルで @property を使用します。
  3. 対応する *.m ファイルで @sythesize を使用します。

うっかり #1 をするのを忘れていました... それでも問題なく動作しました。0 警告。0 エラー。0 アナライザー エラー。

それはどうしてですか?その変数が使用されようとしているすべての場所で、私のコードにコンパイラ エラーがロードされるべきではありませんか?

4

2 に答える 2

5

これは、新しいランタイムの機能です。詳細については、この質問を参照してください。

于 2010-07-12T17:55:51.067 に答える
2

インスタンス変数 (ivars) の自動合成は、OS X の Objective-C 2.0 ランタイムと新しい iOS Objective-C ランタイムの機能です。@synthesize ディレクティブは、自分で宣言しない限り、実行時に必要な ivar を自動的に作成します。これは、Objective-C 2.0 の壊れにくい ivar サポートによって可能になります。したがって、エラーはなく、受け取るべきではありません。

最終的に、クラスのインターフェースで ivar を宣言する必要がないのは良いことです。それらは (おそらく) 実装固有の詳細であり、クラスのパブリック インターフェイスの一部として表示したくないものです。クラス カテゴリを使用すると、「プライベート」プロパティの ivar も自動的に合成できることに注意してください。

于 2010-07-12T18:16:03.697 に答える