我有一个界面
@interface MyInterface
{
NSInteger _count;
}
@end
然后在我的实现中,我只是使用 is as
if (_count==0)
{
//do somthing
}
_count++;
它可以工作,即第一次执行此操作时,该值实际上为 0,即使我从未将其初始化为零。
是因为NSInteger的默认值是0吗?
我有一个界面
@interface MyInterface
{
NSInteger _count;
}
@end
然后在我的实现中,我只是使用 is as
if (_count==0)
{
//do somthing
}
_count++;
它可以工作,即第一次执行此操作时,该值实际上为 0,即使我从未将其初始化为零。
是因为NSInteger的默认值是0吗?
假设您打算写==
而不是=
,答案是 Objective-C 类的所有实例变量(ivars)都被初始化为 0 或nil
对象被创建时。看到问题(Objective-)C ints always initialized to 0? .
如果您实际上是if (_count = 0)
用单个编写的=
,那么这并没有达到您的预期——它将 0 分配给_count
,然后测试它是否为非零(表达式if (x)
测试是否x
为非零)。由于您刚刚为其分配了 0,因此它不是非零,因此测试将始终失败。
将您的 if 语句更改为
if (_count == 0)
记住双等号是比较,单等号是赋值
您正在使用
if (_count=0)
这会将 value 设置0
为 variable _count
,如果此操作成功,{}
则执行之间的代码
测试变量使用比较运算符的值==
if(_count == 0)