2

这是使用拖放重新排序表格时的典型代码片段。

- (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 不仅仅是“唯一无符号整数的不可变集合”,而且是一组标识对象的指针。很混乱,谁能解释一下是怎么回事?

4

0 回答 0