检查对象是否为零时出了什么问题

use*_*563 3 null object objective-c init

我已经阅读了苹果的文档http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/ProgrammingWithObjectiveC/WorkingwithObjects/WorkingwithObjects.html

它说我们可以检查对象是否为空...

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

很可能我做错了什么,但需要你的帮助来找到它是什么.我有一个C2类,我创建C2对象但没有初始化,当检查下面的代码时,app写入NOTNİL输出.我做错了什么.

谢谢你的帮助.

C2 * o3;

    if (o3 != nil) {
        NSLog(@"NOT N?LLLL");
    }else{
        NSLog(@"NOT");
    }
Run Code Online (Sandbox Code Playgroud)

das*_*ght 5

与初始化时归零的类的成员不同,本地变量不会由ARC前编译器自动初始化.如果你想你的地方o3nil,你需要自己初始化:

C2 * o3 = nil;
Run Code Online (Sandbox Code Playgroud)

除非程序明确指示,否则不初始化本地的行为来自C:默认情况下,本地也没有初始化.

  • @melpomene如果您使用自动引用计数(ARC),那就是正确的,它只适用于Objective-C对象指针,而不是指向其他事物的指针. (5认同)