我想写这样的东西:
@interface Foo{
__strong id idArray[];
}
@end
但是编译器抱怨它:
Field has incomplete type '__strong id []'.
如何在ARC下创建id数组成员实例?我如何初始化该数组? 使用malloc?新[]?
我不想使用NSArray,因为我正在将一个大型库转换为ARC,这将导致很多工作。
答案 0 :(得分: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);
答案 1 :(得分:1)
您必须指定数组大小,例如:
__strong id idArray[20];
答案 2 :(得分:1)
要么给阵列一个固定的大小:
__strong id idArray[20];
或者您使用指针和malloc:
__strong id *idArray;
...
self.idArray = calloc(sizeof(id), num);