如果我的.h
文件中有这个:
int index;
然后在.m
我的文件中:
if (index == nil)
而且我还没有给 赋值index
,这会成真吗?
编辑
我猜 nil 仅用于对象。那么尚未分配值的 int 的状态是什么?
如果我的.h
文件中有这个:
int index;
然后在.m
我的文件中:
if (index == nil)
而且我还没有给 赋值index
,这会成真吗?
编辑
我猜 nil 仅用于对象。那么尚未分配值的 int 的状态是什么?
整数没有“零”这样的东西。那是一个对象值。至于默认初始化为哪些变量:
请注意,上面的第一条规则也适用于局部对象变量。它们不会为您进行零初始化。(不过,具有对象类型的实例变量将是。)
尚未分配的整数的值取决于其声明 -int
如果您不为其分配任何其他内容,则静态存储持续时间为零。如果int
您没有显式初始化它,则具有自动或分配的存储持续时间可能具有任何值。
顺便说一句,像这样在你的标题中放置一个对象声明肯定会在以后给你带来痛苦。
在您为其赋值之前,该变量在技术上是未定义的(可能具有任何值)。最有可能的是,它将等于零。此外,nil 和 NULL 都定义为零。但是,不建议进行这种比较。你应该只在比较指针时使用 nil (它不打算与原语一起使用)。
nil 是为 Objective-C 对象指针保留的特定值。它与 NULL (0) 非常相似,但与消息传递一起使用时具有不同的语义。
像 int 这样的本地原始数据类型在 Objective-C 中没有被初始化。index 的值在您写入之前不会被定义。
void foo () {
//initialize local variable
int x = 5;
}
//initialise static variable
static int var = 6;