首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分配NSUInteger IndexBuffer

分配NSUInteger IndexBuffer
EN

Stack Overflow用户
提问于 2009-04-17 22:53:56
回答 2查看 1.2K关注 0票数 1

我正在尝试通过调用-getIndexes:maxCount:indexRange来检索我的NSIndexSet

以下是我的代码

代码语言:javascript
复制
const NSUInteger arrayCount = picturesArray.count;
NSUInteger theIndexBuffer[arrayCount];      
[picturesArray getIndexes:theIndexBuffer maxCount:arrayCount inIndexRange:nil];

但是,在调试器中,IndexBuffer始终显示为-1。当我用一个像NSUInteger theIndexBuffer[10]这样的静态数初始化它时,我得到了一个正确的实例。

这可能是因为它在编译时不知道arrayCount是什么。

这样做的正确方法是什么?

EN

回答 2

Stack Overflow用户

发布于 2009-04-17 23:03:16

您可以使用如下指针动态分配它:

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

代码语言:javascript
复制
NSUInteger thirdElement = theIndexBuffer[2]; // arrays are 0-indexed

当你完成的时候,不要忘记释放它。

票数 2
EN

Stack Overflow用户

发布于 2009-04-18 19:43:36

我不认为你做错了什么。It's valid in C99.您可以通过查看其计算结果是否为true来再次检查:

代码语言:javascript
复制
sizeof(theIndexBuffer) == arrayCount * sizeof(NSUInteger)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/762489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档