2

「ローカルオブジェクト変数」はメソッドで使用または初期化される変数ですか、それとも取り込まれる引数ですか? この用語は、Xcode のドキュメントや Google で見つかりません。

私が使用しているObjective-Cの本でこれを見つけました。完全な引用は

C の基本データ型であるローカル変数にはデフォルトの初期値がないため、使用する前に値を設定する必要があります。reduce メソッドの 3 つのローカル変数は、使用前に値が設定されるため、ここでは問題ありません。ローカル オブジェクト変数は、デフォルトでnilに初期化されます。インスタンス変数 (メソッド呼び出しによって値を保持する) とは異なり、これらのローカル変数にはメモリがありません。したがって、メソッドが戻った後、これらの変数の値は消えます。メソッドが呼び出されるたびに、そのメソッドで定義された各ローカル変数は、変数の宣言で指定された値 (存在する場合) に再初期化されます。"

4

2 に答える 2

1

あなたのコメントに基づいて、私は本の意味を理解しています。ローカル変数は、特定のスコープに対してローカルな変数です (C および Objective-C では中括弧 '{}' で示されます)。ローカル変数は、グローバルに表示および使用できるグローバル変数とは対照的に、それらが使用されるスコープで宣言されます (宣言の可視性に応じて、ファイル、複数のファイル、またはプログラム全体に対して)。インスタンス変数はクラス インスタンスの一部であり、そのメソッドのいずれかで使用できます (@public を使用して宣言されている場合は他のクラスも使用できますが、一般的には良い方法ではありません)。

プリミティブ ローカル変数は、型が int、float、char などの C プリミティブであるローカル変数です。この本で「ローカル オブジェクト変数」と呼ばれているのは、型が (へのポインター) である目的の C オブジェクトの単純なローカル変数です。例はNSString *NSDictionary *およびidです。

ローカル変数は、ヒープではなくスタックに格納されます。スタック上の変数は、宣言されたメソッドまたは関数呼び出しの最後に消えます。このスタック オーバーフローの質問には、スタックとヒープの違いを説明する適切な回答がいくつかあります。スタックとヒープとは何ですか?

「ローカル変数 Objective-C」の Google 検索の最初の結果: http://blog.ablepear.com/2010/04/objective-c-tuesdays-local-variables.html

于 2012-04-06T15:35:54.573 に答える