2012-12-16 51 views
3

我看過蘋果的文檔有什麼不好http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/ProgrammingWithObjectiveC/WorkingwithObjects/WorkingwithObjects.html檢查時,如果對象是零

它說,我們可以檢查對象爲null就像...

XYZPerson *somePerson; 
    // somePerson is automatically set to nil 
if (somePerson != nil) { 
     // somePerson points to an object 
    } 

最有可能我是做錯了什麼,但需要你的幫助來找到它是什麼。 我有一個C2類,我創建C2對象,但不初始化,當檢查下面的代碼時,應用程序寫NOT NOT輸出。我做錯了什麼。

感謝您的幫助。

C2 * o3; 

    if (o3 != nil) { 
     NSLog(@"NOT NİLLLL"); 
    }else{ 
     NSLog(@"NOT"); 
    } 

回答

5

與在初始化時清零的類的成員不同,本地變量不會由ARC預編譯器自動初始化。如果你想你的本地o3nil,你需要自己初始化:

C2 * o3 = nil; 

除非程序明確針對未初始化當地人的行爲來自於C:有,太,當地人不被初始化默認。

+0

這不直接與鏈接的文檔相矛盾嗎? 「對於對象指針,[初始化變量]不是必須的,因爲如果不指定任何其他初始值,編譯器會自動將該變量設置爲零。」 – melpomene

+5

@melpomene如果您使用自動引用計數(ARC),則這是真的,它只適用於Objective-C對象指針,而不適用於指向其他事物的指針。 – benzado

+1

是的,蘋果的文檔是不完整和不可靠的,特別是在版本變化方面。 –