我以为我有它,
void shiftArray(NSMutableArray *mutableArray, NSUInteger shift)
{
for (NSUInteger i = 0; i < [mutableArray count]; i++) {
NSUInteger newIndex = (i + shift) % [mutableArray count];
[mutableArray exchangeObjectAtIndex:i withObjectAtIndex:newIndex];
}
}
当我移动 1 时,它会将 0,1,2,3,4 变为 0,2,3,4,1。
预期结果是 4,0,1,2,3
我觉得我错过了一些明显的东西......
更新:感谢 Matthieu,这就是我现在的功能。
void shiftArrayRight(NSMutableArray *mutableArray, NSUInteger shift) {
for (NSUInteger i = shift; i > 0; i--) {
NSObject *obj = [mutableArray lastObject];
[mutableArray insertObject:obj atIndex:0];
[mutableArray removeLastObject];
}
}
我不知道你可以制作一个通用的 NSObject 并在其中放入一些子类。这一切都只是指针,所以我想没关系,对吧?
很难打破将这些对象视为袋子而不是指向袋子的指针的习惯。