当前数组就像
(a, b, c),
需要改变他们的顺序,比如(b,c,a)和(c,a,b),然后将它们添加到一个新数组,最终目标是得到一个类似
的数组(( a, b, c,), (b, c, a), (c, a, b))
代码如下:
NSMutableArray * now = [[NSMutableArray alloc] initWithObjects:@"a", @"b", @"c", nil];
NSMutableArray * new = [[NSMutableArray alloc] init];
[new addObject:now];
NSLog(@"...new0: %@", new);
int n, i;
for (n = 0; n < 2; n ++) {
for (i = 0; i < [now count] - 1; i ++) {
[now exchangeObjectAtIndex:i withObjectAtIndex:i+1];
}
[new addObject:now];
}
NSLog(@"...new1: %@", new);
但是,最终的new1结果是(c,a,b)覆盖了以前的结果!我的代码出了什么问题?
...new1: (
(
c,
a,
b
),
(
c,
a,
b
),
(
c,
a,
b
)
)
答案 0 :(得分:0)
问题是您现在使用相同的阵列进行更改。 这导致更改现在存储在new中的先前值。 这可以通过添加现在的副本来解决,如下所示
NSMutableArray * now = [[NSMutableArray alloc] initWithObjects:@"a", @"b", @"c", nil];
NSMutableArray * new = [[NSMutableArray alloc] init];
[new addObject:[now copy]];
NSLog(@"...new0: %@", new);
int n, i;
for (n = 0; n < 2; n ++) {
for (i = 0; i < [now count] - 1; i ++) {
[now exchangeObjectAtIndex:i withObjectAtIndex:i+1];
}
[new addObject:[now copy]];
}
NSLog(@"...new1: %@", new);