Objective c NSMutableArray removeObject中的奇怪错误

Objective c NSMutableArray removeObject中的奇怪错误,objective-c,xcode,debugging,ios,nsmutablearray,Objective C,Xcode,Debugging,Ios,Nsmutablearray,我有一段话: 1: if ((s >= kEnumValue1) && (s <= kEnumValue2)) { 2: MyObject * o = [self findObjectFor:s]; 3: if ([o isValidFor:self]) { 4: [arrayOfMyObjects removeObject:o]; 5: for (MyObject * mo in arrayOfMyObjects) { 6: ..

我有一段话:

1: if ((s >= kEnumValue1) && (s <= kEnumValue2)) {
2:   MyObject * o = [self findObjectFor:s];
3:   if ([o isValidFor:self]) {
4:     [arrayOfMyObjects removeObject:o];
5:     for (MyObject * mo in arrayOfMyObjects) {
6:       ...
7:     }
8:   }
9: }

1:if((s>=kEnumValue1)和&(s可以安全地假设您在
removeObject:
中没有发现bug(除非您自己编写)


您是否检查了
ArrayOfMyObject
?它是否非nil?它是否包含任何内容?

好的,在我的项目的所有类中进行大量调试后,我发现,当调用MyObject的release时,它在另一个类上调用“release”(因为它是最后一个引用,所以它调用“dealloc”),再次用于第三个类,然后,它在NSMutableDictionary中调用removeObjectForKey:nil。这会引发一个根本没有记录的NSInvalidArgumentException。太邪恶了…

您是否在调试配置中调试?优化会使代码流跳跃。是的。我正在使用调试配置文件进行调试。该代码实际上被称为twice,因为我在尝试查找“s”时出错,但它不存在。是的,它不是零,只包含删除的实例。我很喜欢这些实例。想想你作为一名iOS程序员,通过跟踪这些实例,已经成长了多少。;)确切地说。我错过了理解UITableView是我最大问题的时候。:D