我对使用此方法以及将其列为(void)方法的文档感到困惑。
“返回索引路径的索引”
它在哪里也会返回什么?
不应该:
- (NSIndexPath *)getIndexes:(NSUInteger *)indexes
getIndexes: 提供对索引路径索引的引用。
- (void)getIndexes:(NSUInteger *)indexes
参数 索引 指向无符号整数数组的指针。返回时,索引路径的索引。 可用性 适用于iOS 2.0及更高版本。 宣告进入 NSIndexPath.h
答案 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))
.....或者我到目前为止还有它令人尴尬?