2013-03-05 129 views
6

NSMutableArray奇怪的行为。NSMutableArray removeObjectAtIndex奇怪的问题。

我创建了对象并填充它。

NSMutableArray *array = [[NSMutableArray alloc] 
         initWithObjects:@"1",@"2",@"3",@"4", nil]; 
[array removeObjectAtIndex:0]; 

取出之前,它看起来像:

array NSMutableArray * 0x1040b5e0 
[0] id 0x00088a44 @"1" 
[1] id 0x00088a54 @"2" 
[2] id 0x00088a64 @"3" 
[3] id 0x00088a74 @"4" 

除去第一个元素后:

array NSMutableArray * 0x1040b5e0 
[0] id 0x00000000 
[1] id 0x00088a54 @"2" 
[2] id 0x00088a64 @"3" 

我到底错在这里做什么?

+0

根据你的代码,对象“1”必须拆除..而且你的代码工作正常..然后你面对什么样的问题????? – 2013-03-05 12:46:52

+0

“4”也丢失,元素0为零,这是错误的 – Fonix 2013-03-05 12:49:05

+0

@VineetSinghRawat,看看输出。是的,“1”已被删除。但是“2”应该是第一个,“3”应该是第二个,应该仍然是“4”。他得到的是索引0上的零对象,然后是“2”,“3”和“4”消失。这是你期望从[数组removeObjectAtIndex:0]? – 2013-03-05 12:49:57

回答

8

您是否在使用lldb进行调试?如果是这样,请尝试gdb

lldb已经知道这种性质的错误,它在调试会话期间报告错误的变量值。

到调试器更改为GDB:

  1. 点击你的目标在工具栏中
  2. 选择“编辑计划”
  3. 确保“运行”方案在窗格中选择的剩下。
  4. 将'Debugger'下拉列表从lldb更改为gdb。
+0

但它对我来说都适合这两个调试器。 – 2013-03-05 12:50:39

+1

的确有报道称,LLDB调试器在旧版Xcode上有一些bug,比如4.3.1。如果无法升级(总是推荐),请尝试使用GDB替代方法。 – Calin 2013-03-05 12:57:11

+0

帮助我,谢谢。 – evilgeniuz 2013-03-05 13:02:03

3

您的相同代码工作正常,只需清理并构建项目。这里是我的代码

NSMutableArray *sampleArray = [[NSMutableArray alloc] 
         initWithObjects:@"1",@"2",@"3",@"4", nil]; 
NSLog(@"%@", sampleArray); 
[sampleArray removeObjectAtIndex:0]; 
NSLog(@"%@", sampleArray);