Objective-Cのポインタの値が何かを割り当てるまで定義されていないことを示唆するさまざまな人物/記事(例:this SO answer)が見つかりました。宣言時にポインタは常にnilに設定されていますか?
NSString* foo; // 1
assert(foo==nil); // foo is nil
foo = [NSString alloc]; // 2
assert(foo!=nil); // after alloc, not nil.
foo = [foo init]; // 3
assert(foo!=nil); // still not nil
/私はこれに依存している必要がありますすることができ:次のコードは、アサートすることなく、私のために動作します - しかし、私は、彼らは自動的に私はalloc
を呼び出す前であってもnil
に設定されていることを実際に見つけていますか?それは保証されているのですか、または何らかのデバッグモードでコンパイラ(Xcode)を実行していますか? (私はObjective-Cの新機能です)。
結果的な質問:foo
を1,2,3と記された行の最後に記述する正しい用語は何ですか? 1 & 2のうち少なくとも1つは「初期化されていない」と呼ばれ、2 & 3のうちの1つは「初期化」されていますが、それはどのようなものですか。
テスト成功成功
OutPut :
テストが初期化されOutPut :
ARC環境でOBJ-Cでのテストを実行し、 。エラーなしです。 – theWalkerhttp://stackoverflow.com/questions/3989377/xcode-compiler-doesnt-set-my-variable-and-pointer-initial-value-to--0-or-nilの可能な複製 –