以下是使用拖放重新排序表格时的典型代码段。
- (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不是一个简单的"一个独立的无符号整数的不可变集合"还有一组标识对象的指针。它很混乱,任何人都可以解释发生了什么?