Objective-C创建的C-array的初始值

时间:2010-06-11 09:17:45

标签: c objective-c arrays memset

我创建了一个类似于经典C(不是NSArray或其中一个孩子)的数组 - 类似于BOOL i[5];。我想让它的所有值都等于NO。

首先,我没有找到关于这些数组的初始值的任何信息(我知道在经典C中它们将是未定义的,但不完全了解Objective-C。我发现有关类及其的信息内部数据[分配后,没有初始化],但不是关于简单数据类型。)

第二,如果我应该手动设置数组值 - 我应该使用memset(...);还是其他不同的东西?

为了防止可能出现的问题...我想将此构造用作临时布尔标志的数组,并且不要认为它在这里被证明使用类似NSArray的东西。

2 个答案:

答案 0 :(得分:3)

如果BOOL i[5]是ObjC类的ivar,其内容将被初始化(memset - ed)为0。

+alloc method

中所述
  

...所有其他实例变量的内存设置为0


要在其他情况下将数组设置为全部NO,可以使用

memset(i, 0, sizeof(i));

答案 1 :(得分:0)

即使它是0-ed而不是像C中的undef一样,正确的初始化应该明确地设置所有值,因为你不知道NO是否为0(它是,但是在结合上......!),所以简单地说:

for(j = 0; j < 5; j++) i[j] = NO;

可以胜任这项工作。