我想知道在初始化变量之前变量的默认值是什么......
例如,如果我这样做:
//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];
谢谢您的回答。
Gotye.
答案是,这取决于变量定义的范围。
Objective-C 对象的实例变量总是初始化为 0/nil/false,因为分配的内存被清零。
全局变量是probably初始化为 0/nil/false 是因为当内存第一次分配给进程时,它也会被操作系统清零。然而,当然,我从不依赖它,并且总是自己初始化它们。
局部变量未初始化,并且将包含随机数据,具体取决于堆栈的增长/收缩方式。
注意,对于指向 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)