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 中,即使这是一个动态分配的缓冲区,您也可以使用数组下标运算符并(在大多数情况下)假装它只是一个数组。所以,如果你想得到第三个元素,你可以写:

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

完成后不要忘记释放它。

于 2009-04-17T23:03:16.297 回答
1

我不认为你做错了什么。它在 C99 中有效。您可以通过查看这是否为真来仔细检查:

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