2

私はobj-cから始めていますが、得られないことがいくつかあります。

まず、私(AS3コーディングの観点から来ています)は、クラスに変数が必要な場合は、最初に@property演算子を使用してヘッダーで宣言し、次に@synthesizeで宣言する必要があると考えました。 .mファイル、およびヘッダーでもメソッドを宣言する必要がありましたが、変数が.mファイルのメソッドで定義され、どこにも宣言されていない状況に遭遇しました。メソッドについても同じです。 、宣言せずに.mファイルに直接書き込まれ、正常に機能するメソッド。

では、変数の@ property / @ synthesizeと、ヘッダーファイルでメソッドを宣言することのポイントは何ですか?それはすべてスコープと関係がありますか?

4

3 に答える 3

3

あなたが話しているのは、変数の宣言を参照するのではなく、ゲッターとセッターを介してクラスの外部から公開することです。

@property/@synthesize は、次の 2 つのメソッドを自動的に作成するための単なるショートカットです。

  • - (void) [class setVariable:(type)var]
  • - (type) [class variable]

他のクラスから変数を設定および取得できます。

すべての変数をクラス外から設定または取得する必要があるわけではありません。

于 2012-08-05T13:27:50.420 に答える
1

ヘッダー (.h) ファイルには、このクラスについて他のクラスに知らせたい情報が含まれている必要があります。クラス拡張 (.m ファイル内のインターフェイス セクション) は、private 宣言に適した場所です。(メソッドが使用される前に定義されている場合、それは宣言として機能します。最適ではありませんが、機能します。)

于 2012-08-05T13:30:34.793 に答える
1

Objective-C の変数には、主に 3 つのカテゴリがあります。

  • インスタンス変数
  • 静的スコープ変数 (静的、グローバル、および関数静的)
  • 自動スコープ変数 (ローカルおよび関数/メソッド パラメーター)

プロパティを宣言して合成すると、インスタンス変数が作成されます。一方、ローカル変数はコード ブロックのスコープ内で宣言され、プロパティを通じて宣言することはできません。

于 2012-08-05T13:31:08.553 に答える