3

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

“返回索引路径的索引”

它也在哪里返回任何东西?

不应该是:

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

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

- (void)getIndexes:(NSUInteger *)indexes

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

4

4 回答 4

4

您必须分配大小为 [indexPath length] 的 NSUInteger 数组并将其作为参数传递。返回值将写入那里。您必须自己释放该数组或不执行在堆栈上创建的任何操作,如下所示:

NSUInteger array[[indexPath length]];
[indexPath getIndexes: array];
于 2011-03-11T11:25:00.293 回答
2

或许下一句话就说明了原因

为 C 数组分配内存是开发人员的责任。

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

您可以按如下方式使用该功能

NSUInteger indexCount = [indices count];
NSUInteger buffer[indexCount];
[indices getIndexes:buffer maxCount:indexCount inIndexRange:nil];
于 2011-03-11T11:22:21.700 回答
0

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

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

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

于 2011-03-11T11:24:21.247 回答
0

Max、Thomas 和 Caleb,我已经尝试了所有三种方法,但无法让任何东西发挥作用,所以可能太快地启动了接受的解决方案......但可能更有可能我只是不明白?我无法获得正确大小的数组以循环遍历它以访问表中所需的行。我会认为calloc([indexPath length], sizeof(NSUInteger))对于一个有 5 行的组会返回一个有 5 行的数组,每行都持有NSUIntegr.....或者离梁太远了,这很尴尬?

于 2011-03-11T13:26:07.440 回答