Странная ошибка в NSMutableArray removeObject - PullRequest
1 голос
/ 12 февраля 2011

У меня есть этот фрагмент:

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: }

По какой-то очень странной причине, когда мой код достигает строки 4, если я перехожу, он возвращается к началу метода в том же потоке, безидти по линии 5-.Кто-нибудь знает, почему это происходит?

removeObject в NSMutableArray не упоминает никаких исключений.

Ответы [ 2 ]

2 голосов
/ 12 февраля 2011

Можно с уверенностью предположить, что вы не нашли ошибку в removeObject: (если вы не написали свою собственную).

Вы проверили arrayOfMyObjects? Это не ноль? Содержит ли оно что-нибудь?

1 голос
/ 13 февраля 2011

ОК, после многих отладок во всех классах моего проекта, я обнаружил, что когда вызывается выпуск MyObject, он вызывает «выпуск» для другого класса (поскольку это последняя ссылка, он вызывает «dealloc»)снова для третьего класса, а затем он вызывает removeObjectForKey: nil в NSMutableDictionary.Это вызывает NSInvalidArgumentException, который вообще не регистрируется.Слишком злой ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...