1

NSIndexSet電話で取得しようとしています-getIndexes:maxCount:indexRange

これが私のコードです

const NSUInteger arrayCount = picturesArray.count;
NSUInteger theIndexBuffer[arrayCount];      
[picturesArray getIndexes:theIndexBuffer maxCount:arrayCount inIndexRange:nil];

ただし、デバッガーでは、IndexBufferは常にとして表示され-1ます。のような静的な数値で初期化するとNSUInteger theIndexBuffer[10]、適切なインスタンスが得られます。

arrayCountこれはおそらく、コンパイル時に何が起こっているのかがわからないためです。
これを行う正しい方法は何ですか?

4

2 に答える 2

2

次のようなポインタを使用して、動的に割り当てることができます。

NSUInteger *theIndexBuffer = (NSUInteger *)calloc(picturesArray.count, sizeof(NSUInteger));
// Use your array however you were going to use it before
free(theIndexBuffer); // make sure you free the allocation

Cでは、これは動的に割り当てられたバッファーですが、配列の添え字演算子を使用して、(ほとんどの場合)それが単なる配列であるかのように見せかけることができます。したがって、3番目の要素を取得したい場合は、次のように記述できます。

NSUInteger thirdElement = theIndexBuffer[2]; // arrays are 0-indexed

終わったら、それを解放することを忘れないでください。

于 2009-04-17T23:03:16.297 に答える
1

私はあなたが何か悪いことをしたとは思わない。C99で有効です。これがtrueと評価されるかどうかを確認することで、再確認できます。

sizeof(theIndexBuffer) == arrayCount * sizeof(NSUInteger)
于 2009-04-18T19:43:35.630 に答える