我發現了各種各樣的人/文章(例如this SO answer),它們表明Objective-C中指針的值在您爲其指定某些內容之前未定義。但是,我發現在實踐中,他們將自動設置爲我叫alloc
甚至在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
可以/我應該靠這個?它是保證還是隻是碰巧在某種調試模式下運行我的編譯器(Xcode)? (我是Objective-C的新手)。
一個必然的問題:在標記爲1,2和3的行末尾描述foo
的正確術語是什麼?我想至少有一個被稱爲'未初始化',並且其中一個'已初始化',但是其中,我們稱之爲第三個選項?
頁頭對象之後進行初始化,通常不==零。等於零它是錯誤 – theWalker 2012-01-30 22:52:34
可能的重複http://stackoverflow.com/questions/3989377/xcode-compiler-doesnt-set-my-variable-and-pointer-initial-value-to-0-or-nil – 2012-01-30 22:54:35