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