代码之家  ›  专栏  ›  技术社区  ›  Alex Taylor

在Objective EC中,指针是类实例变量初始化为“nil”还是其他?

  •  10
  • Alex Taylor  · 技术社区  · 15 年前

    也就是说,如果您创建一个指针,那么Objective EC的行为是否像C,例如:

    NSString* c;
    

    C是指向nil,还是指向为其保留的内存区域中的随机值?

    换句话说,指针是被预先初始化的,还是我自己需要这样做?正如我所说的,我意识到这不是C/C++中的情况,但我想知道这里有没有Objc魔法。

    4 回复  |  直到 14 年前
        1
  •  13
  •   JaredPar    15 年前

    确保Objective-C中的类实例变量初始化为空值(0、nil等…)

        2
  •  3
  •   Peter N Lewis    15 年前

    类实例变量和静态/全局变量根据需要初始化为nil/null/0/false。

    但是局部变量没有初始化。

        3
  •  1
  •   Alex Brown    15 年前

    它们为零,您可以假设,例如通过测试:

    if (nil == myVariableIHaventInitialisedYet)
    { 
      myVariableIHaventInitialisedYet = [SomeThingIMightMake initWithLove];
    }
    
        4
  •  0
  •   user387896    14 年前

    注意这一个上的局部变量。它们不会被初始化为nil,所以如果您在声明中没有初始化为nil,请确保在使用它之前它们已经在某个地方初始化了。正如彼得所说,类、实例和静态对您来说是初始化为零的,所以不用担心。

    通常没有问题,但特别是在传入指针引用的调用中(如nserrror**),它会有所不同。