NSIndexPath getIndexes方法....怎么样?

时间:2011-03-11 11:14:55

标签: iphone nsindexpath

我对使用此方法以及将其列为(void)方法的文档感到困惑。

“返回索引路径的索引”

它在哪里也会返回什么?

不应该:

- (NSIndexPath *)getIndexes:(NSUInteger *)indexes

getIndexes: 提供对索引路径索引的引用。

- (void)getIndexes:(NSUInteger *)indexes

参数 索引 指向无符号整数数组的指针。返回时,索引路径的索引。 可用性 适用于iOS 2.0及更高版本。 宣告进入 NSIndexPath.h

4 个答案:

答案 0 :(得分:4)

您必须分配大小为[indexPath length]的NSUInteger数组并将其作为参数传递。返回值将写在那里。你必须自己释放那个数组,或者不做任何在堆栈上创建的数据:

NSUInteger array[[indexPath length]];
[indexPath getIndexes: array];

答案 1 :(得分:2)

也许下一句话解释了原因

  

开发人员有责任为C阵列分配内存。

它实际上是一个指向C数组的指针,它将为您填充索引,因此没有理由从函数中另外返回它 - 您已经知道它的地址。

您可以使用以下功能

NSUInteger indexCount = [indices count];
NSUInteger buffer[indexCount];
[indices getIndexes:buffer maxCount:indexCount inIndexRange:nil];

答案 2 :(得分:0)

您将该消息发送到NSIndexPath的实例,因此返回一个将无济于事。 -getIndexes:方法使用索引路径中的索引填充数组'indexes'。所以你会做类似的事情:

NSUInteger *indexes = calloc([indexPath length], sizeof(NSUInteger));
[indexPath getIndexes:indexes];

之后,将使用indexPath中的索引值填充索引。

答案 3 :(得分:0)

马克斯,托马斯和迦勒,我已经尝试了所有这三种方法,并且无法获得任何工作,所以可能会过快地解雇已接受的解决方案.....但可能更有可能我只是不明白?我无法获得正确的数组大小,以循环它来访问我的表中所需的行。虽然{@ 1}}对于一个有5行的组会返回一个包含5行的数组,每行保持calloc([indexPath length], sizeof(NSUInteger)) .....或者我到目前为止还有它令人尴尬?