5

私はこのようなものを書きたい:

@interface Foo{

    __strong id idArray[]; 

}
@end

しかし、コンパイラはそれについて不平を言います:

Field has incomplete type '__strong id []'.

ARC で id 配列メンバー インスタンスを作成するにはどうすればよいですか? そして、その配列をどのように初期化しますか? mallocを使用していますか?新着[]?

大規模なライブラリを ARC に変換していて、多くの作業が発生するため、NSArray を使用したくありません。

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 に答える