我用4个对象初始化NSMutableArray。然后我在第一个索引之后再添加2个对象。然后我删除了两个新添加的对象。从理论上可以清楚地看到,在所有操作之后,我将获得我首先创建的原始数组,但在删除对象后,我得到了奇怪的结果。
代码: -
- (void)viewDidLoad
{
[super viewDidLoad];
NSMutableArray *arr = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3",@"4", nil];
for (NSString *str in arr)
{
NSLog(@"%@",str);
}
[arr insertObject:@"1.1" atIndex:1];
[arr insertObject:@"1.2" atIndex:2];
for (NSString *str in arr)
{
NSLog(@"New %@",str);
}
[arr removeObjectAtIndex:1];
[arr removeObjectAtIndex:2];
for (NSString *str in arr)
{
NSLog(@"Old %@",str);
}
}
输出: -
2013-12-28 14:42:02.703 ArrayDemo[1687:11303] 1
2013-12-28 14:42:02.704 ArrayDemo[1687:11303] 2
2013-12-28 14:42:02.705 ArrayDemo[1687:11303] 3
2013-12-28 14:42:02.705 ArrayDemo[1687:11303] 4
2013-12-28 14:42:02.705 ArrayDemo[1687:11303] New 1
2013-12-28 14:42:02.706 ArrayDemo[1687:11303] New 1.1
2013-12-28 14:42:02.706 ArrayDemo[1687:11303] New 1.2
2013-12-28 14:42:02.706 ArrayDemo[1687:11303] New 2
2013-12-28 14:42:02.707 ArrayDemo[1687:11303] New 3
2013-12-28 14:42:02.707 ArrayDemo[1687:11303] New 4
2013-12-28 14:42:02.708 ArrayDemo[1687:11303] Old 1
2013-12-28 14:42:02.708 ArrayDemo[1687:11303] Old 1.2
2013-12-28 14:42:02.709 ArrayDemo[1687:11303] Old 3
2013-12-28 14:42:02.710 ArrayDemo[1687:11303] Old 4
我无法理解为什么会这样?有人知道吗? 任何帮助将不胜感激......
提前致谢....
答案 0 :(得分:2)
初始数组:
1, 2, 3, 4
[arr insertObject:@"1.1" atIndex:1]
之后:
1, 1.1, 2, 3, 4
[arr insertObject:@"1.2" atIndex:2]
之后:
1, 1.1, 1.2, 2, 3, 4
[arr removeObjectAtIndex:1]
之后:
1, 1.2, 2, 3, 4
[arr removeObjectAtIndex:2]
之后
1, 1.2, 3, 4
所以一切都是正确的。如果要删除那些元素 您之前插入,然后您必须以相反的顺序删除它们:
[arr removeObjectAtIndex:2];
[arr removeObjectAtIndex:1];
在这种情况下,最终结果将是1, 2, 3, 4
。