id ARC下的array成员实例



我想写这样的东西:

@interface Foo{
    __strong id idArray[]; 
}
@end

但是编译器报错了:

Field has incomplete type '__strong id []'.

如何在ARC下创建id数组成员实例?如何初始化这个数组呢?使用malloc ?新[]吗?

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

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

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

使用calloc分配数组。Id __strong必须初始化为0。

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

完成后,必须将数组项设置为nil,然后释放。

for (int i = 0; i < entries; ++i)
    idArray[i] = nil;
free(idArray);

你必须指定一个数组的大小,例如:

__strong id idArray[20]; 

给数组一个固定的大小:

__strong id idArray[20];

或者使用指针和malloc:

__strong id *idArray;
...
self.idArray = calloc(sizeof(id), num);

最新更新