0

可能重复:
(Objective-)C 整数总是初始化为 0?

我有一个界面

@interface MyInterface
{
   NSInteger _count;
}

@end

然后在我的实现中,我只是使用 is as

if (_count==0)
{
  //do somthing
}
_count++;

它可以工作,即第一次执行此操作时,该值实际上为 0,即使我从未将其初始化为零。

是因为NSInteger的默认值是0吗?

4

3 回答 3

4

假设您打算写==而不是=,答案是 Objective-C 类的所有实例变量(ivars)都被初始化为 0 或nil对象被创建时。看到问题(Objective-)C ints always initialized to 0? .

如果您实际上是if (_count = 0)用单个编写的=,那么这并没有达到您的预期——它将 0 分配给_count,然后测试它是否为非零(表达式if (x)测试是否x为非零)。由于您刚刚为其分配了 0,因此它不是非零,因此测试将始终失败。

于 2011-09-16T22:13:20.050 回答
1

将您的 if 语句更改为

if (_count == 0)

记住双等号是比较,单等号是赋值

于 2011-09-16T22:10:36.193 回答
1

您正在使用

if (_count=0)

这会将 value 设置0为 variable _count,如果此操作成功,{}则执行之间的代码

测试变量使用比较运算符的值==

if(_count == 0)
于 2011-09-16T22:11:30.977 回答