0

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

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

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

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

4

2 回答 2

2

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

+alloc方法中所述:

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


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

memset(i, 0, sizeof(i));
于 2010-06-11T09:22:36.057 回答
0

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

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

可以完成这项工作。

于 2010-06-11T11:28:39.590 回答