gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 19:20:40 27 4
gpt4 key购买 nike

我想知道在初始化变量之前它们的默认值是什么......

例如,如果我这样做:

//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,因为当内存首次分配给进程时,它也会被操作系统清零。然而,当然,我从不依赖它,并且总是自己初始化它们。

局部变量未初始化,并且将包含随机数据,具体取决于堆栈的增长/收缩方式。

注意,对于指向 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

关于iphone - - 声明时变量的默认值 -,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2635677/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com