Как NSIndexSet может быть корневым объектом?

Вот типичный фрагмент кода при переупорядочении таблицы с помощью перетаскивания.

- (BOOL)tableView:(NSTableView *)tv writeRowsWithIndexes:(NSIndexSet *)rowIndexes toPasteboard:(NSPasteboard *)pboard {
    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:rowIndexes];
    [pboard declareTypes:[NSArray arrayWithObject:MyDataType] owner:self];
    [pboard setData:data forType:MyDataType];
    sourceIndex = [rowIndexes firstIndex];
    return YES;
}

Посмотри на строчку

 NSData *data = [NSKeyedArchiver archivedDataWithRootObject:rowIndexes];

Как rowIndexes может быть корневым объектом?

В документах говорится, что класс NSIndexSet представляет собой неизменную коллекцию уникальных целых чисел без знака.... Вы используете наборы индексов в своем коде для хранения индексов в некоторой другой структуре данных. Например, учитывая объект NSArray, вы можете использовать набор индексов для идентификации подмножества объектов в этом массиве.

Кажется, что NSIndexSet - это не просто "неизменяемая коллекция уникальных целых чисел без знака", но и набор указателей, которые идентифицируют объекты. Это очень сбивает с толку, кто-нибудь может объяснить, что происходит?

0 ответов

Другие вопросы по тегам