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