5

我想写这样的东西:

@interface Foo{

    __strong id idArray[]; 

}
@end

但是编译器抱怨它:

Field has incomplete type '__strong id []'.

如何在 ARC 下创建 id 数组成员实例?以及如何初始化该数组?使用malloc?新的[]?

我不想使用 NSArray,因为我正在将一个大型库转换为 ARC,这会导致很多工作。

4

3 回答 3

11

如果要动态分配数组,请使用 id __strong 的指针类型。

@interface Foo
{
    id __strong *idArray;
}
@end

使用 calloc 分配数组。id __strong 必须初始化为零。

idArray = (id __strong *)calloc(sizeof(id), entries);

完成后,您必须将 nil 设置为数组的条目,并释放。

for (int i = 0; i < entries; ++i)
    idArray[i] = nil;
free(idArray);
于 2011-09-05T12:57:45.543 回答
1

您必须指定数组大小,例如:

__strong id idArray[20]; 
于 2011-09-05T12:41:20.693 回答
1

要么给数组一个固定的大小:

__strong id idArray[20];

或者您使用指针和malloc:

__strong id *idArray;

...

self.idArray = calloc(sizeof(id), num);
于 2011-09-05T12:59:18.710 回答