在我初始化变量之前,我想知道变量的默认值是什么…
例如,如果我这样做:
//myClass.h
BOOL myBOOL; // default value ?
NSArray *myArray; // default value ?
NSUInteger myInteger; // default value ?
这里还有一些例子:
//myClass.m
// myArray is not initialized, only declared in .h file
if ([myArray count] == 0) { // TRUE or FALSE ?
// do whatever
}
更一般地说,当我这样做时返回的内容:
[myObjectOnlyDeclaredAndNotInitialized myCustomFunction];
谢谢您的回答.
高堤耶.
最佳答案 答案是它取决于定义变量的范围.
Objective-C对象的实例变量始终初始化为0 / nil / false,因为分配的内存为零.
全局变量可能初始化为0 / nil / false,因为当内存首次分配给进程时,它也会被操作系统归零.但是,当然,我从不依赖于此,而是始终自己初始化它们.
局部变量是未初始化的,并且将包含随机数据,具体取决于堆栈的增长/收缩方式.
NB指向Objective-C对象的指针,您可以安全地将消息发送到nil.所以,例如:
NSArray* foo = nil;
NSLog(@"%@ count = %d", foo, [foo count]);
是完全合法的,将运行而不会崩溃输出类似于:
2010-04-14 11:54:15.226 foo[17980:a0f] (null) count = 0