NSIndexPath метод getIndexes .... как? - PullRequest
3 голосов
/ 11 марта 2011

Меня смущает использование этого метода и документация, в которой он указан как (void) метод.

"при возврате индексов пути индекса"

где он тоже что-то возвращает?

Разве это не должно быть:

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

getIndexes: Предоставляет ссылку на индексы пути индекса.

- (void)getIndexes:(NSUInteger *)indexes

Параметры индексы Указатель на целочисленный массив без знака. По возвращении индексы пути индекса. Доступность Доступный в iOS 2.0 и позже. Объявлен в NSIndexPath.h

Ответы [ 4 ]

4 голосов
/ 11 марта 2011

Вы должны выделить массив NSUInteger размером [длина indexPath] и передать его в качестве аргумента. Возвращаемое значение будет написано там. Вы должны освободить этот массив самостоятельно или ничего не делать, он был создан в стеке так:

NSUInteger array[[indexPath length]];
[indexPath getIndexes: array];
2 голосов
/ 11 марта 2011

Может быть, следующее предложение объясняет причину

Разработчик обязан выделить память для массива C.

На самом деле это указатель на массив C, который будет заполнен для вас индексами, поэтому нет причин дополнительно возвращать его из функции - вы уже знаете его адрес.

Вы можете использовать функцию следующим образом

NSUInteger indexCount = [indices count];
NSUInteger buffer[indexCount];
[indices getIndexes:buffer maxCount:indexCount inIndexRange:nil];
0 голосов
/ 11 марта 2011

Макс, Томас и Калеб, я перепробовал все три способа и не могу заставить что-либо работать, так что, может быть, слишком быстро сработало принятое решение ..... но, скорее всего, я просто не понял?Я не могу получить правильный размер массива, чтобы пройти через него, чтобы получить доступ к необходимым строкам в моей таблице.Хотелось бы, однако, чтобы calloc([indexPath length], sizeof(NSUInteger)) для группы из 5 строк возвращал массив из 5 строк, в котором каждая строка содержала NSUIntegr ..... или я так далеко от луча, что это неловко?

0 голосов
/ 11 марта 2011

Вы отправляете это сообщение экземпляру NSIndexPath, поэтому его получение не поможет. -GetIndexes: метод заполняет массив «индексы» индексами из пути индекса. Так что вы бы сделали что-то вроде:

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

После этого индексы будут заполнены значениями индекса, которые находятся в indexPath.

...