2012-04-06 8 views
2

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

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

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

+0

"ローカルオブジェクト変数"はObjective-Cの典型的な用語ではありません。それはどこで使われているのですか? –

+0

私の本の中には、「基本的なCのデータ型であるローカル変数はデフォルトの初期値がないので、それらを使う前にある値に設定する必要があります。 – stumped

+0

'reduce'メソッドの3つのローカル変数はvalues Lovlのオブジェクト変数はデフォルトでは_nil_に初期化されていますが、インスタンス変数(メソッド呼び出しによって値が保持されます(これらのローカル変数はメモリを持たないため、メソッドが呼び出されるたびに、そのメソッドで定義されている各ローカル変数が指定された値に*(変数の宣言とともに)再初期化されます。 " – stumped

答えて

1

をあなたのコメントに基づいて、私は本が何を意味するか理解しています。ローカル変数(CとObjective-Cでは中括弧 '{}'で示されている)ローカル変数は、グローバル変数ではなくグローバル変数として使用されるスコープで宣言されます。インスタンス変数はクラスインスタンスの一部であり、そのメソッドのどれでも使用できます(@publicを使って宣言しても他のクラスも使用できますが、一般的にはそれが良い方法ではありません) 。

プリミティブローカル変数はint型、float型、char型などのCプリミティブ型のローカル変数です。「ローカルオブジェクト変数」と呼ばれるものはObjective-Cオブジェクトの型(ポインタ)のローカル変数です。例はNSString *,NSDictionary *およびidです。

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

"local variables objective-c"の検索結果の最初の結果はhttp://blog.ablepear.com/2010/04/objective-c-tuesdays-local-variables.htmlです。

+0

ありがとう! – stumped

関連する問題