2013-04-07 5 views
0

Приложение сбой с сигналом SIGABRT (выход отладчика child already added. It can't be added again) в симуляторе и на устройстве. Работает нормально, когда я просматриваю приложение в Xcode во время его запуска на симуляторе или на устройстве. Почему это?Ошибка приложения на тренажере и устройстве, но не при профилировании

Update: Я понял, что эта строка кода вызывает проблему:

Mover *moverObject = [[[Mover alloc] init] autorelease]; 
NSMutableArray * array = [moverObject moveToward:startPoint :finalPoint]//<-- This is the problem 

moveToward является метод, который возвращает NSMutableArray, содержащий точки из startPoint в finalPoint. Сегодня это сработало хорошо, но после того, как я начал тестировать что-то новое, я думаю, я сломал его. Я не внес изменений в фактический Mover.h/.m только в GameLayer.m (где я добавлял код). Я не уверен, что я добавил, чтобы вызвать проблему.

Update 2: Я сделал несколько более рыть с помощью контрольных точек, и я обнаружил, что

GameLayer *gameLayerObject = [[GameLayer alloc] init];<-- This causes the crash 

Внутри mover.m где метод moveToward:: есть, это дальше будет идти без сбоев. Опять ошибка child already added. It can't be added again. Почему это происходит?

ответ

1

Это может быть просто совпадение. Трудно сказать, потому что вы не отправляли никакого кода.

Сообщение об ошибке ясно: вы пытаетесь установить addChild один и тот же узел более одного раза либо одному родителю, либо другому родителю. Проверьте код на ситуации, когда это может произойти.

+0

Да, я искал, где это может произойти, есть ли профилировщик, который, как вы знаете, может помочь в этом? Но почему приложение работает, пока я его профилирую? не приведет ли SIGAGRT к сбою при профилировании? – stenger96

+0

Профилирование означает анализ того, как работает ваша программа, вы подразумеваете отладку. Если вы еще этого не сделали, включите глобальную точку исключения исключений в Xcode. Я не могу понять, почему он работает во время профилирования, возможно, вы просто не вызываете код, вызывающий ошибку. – LearnCocos2D

+0

Обновлен мой вопрос. И после того, как он разбился на устройстве и симуляторе, я попытался воспроизвести сбой при профилировании, следуя ТОЧНЫМ тем же шагам, но приложение не сработает. – stenger96

Смежные вопросы