3

我已经阅读了来自苹果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
    }

很可能我做错了什么,但需要你的帮助才能找到它。我有一个 C2 类,我创建了 C2 对象但没有初始化,当检查下面的代码时,应用程序将 NOT NİL 写入输出。我做错了什么。

谢谢你的帮助。

C2 * o3;

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

1 回答 1

5

与在初始化时清零的类成员不同,局部变量不会由 pre-ARC 编译器自动初始化。如果你希望你的 localo3nil,你需要自己初始化它:

C2 * o3 = nil;

除非程序明确指示,否则不初始化局部变量的行为来自 C:在那里,默认情况下也不初始化局部变量。

于 2012-12-16T23:18:26.163 回答