ARC下的id数组成员实例

ARC下的id数组成员实例

本文介绍了ARC下的id数组成员实例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想写这样的东西:

@interface Foo{

    __strong id idArray[];

}
@end

但是编译器对此抱怨:

Field has incomplete type '__strong id []'.

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

How can I create an id array member instance under ARC? And how do I init that array?Using malloc? new[]?

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

I don't want to use NSArray because I'm converting a large library to ARC and that will cause a lot of work.

推荐答案

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

If you want to allocate dynamically the array, use pointer type of id __strong.

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

使用calloc分配数组. __strong的ID必须以零开头.

Allocate the array using calloc. id __strong must be intialized with zero.

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

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

When you are done, you must set nil to the entries of the array, and free.

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

这篇关于ARC下的id数组成员实例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-14 02:28