iphone – – 声明时变量的默认值 –

在我初始化变量之前,我想知道变量的默认值是什么…

例如,如果我这样做:

//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
点赞