iOS 7 SpriteKit Game - ошибка при сохранении загрузки игры: "Попытка добавить nil-узел к родителю: <SKNode> name: '(null)'
Я создаю игру в слова.
Я достиг стадии, когда я могу сохранить / загрузить игру, используя:
(void)encodeWithCoder:(NSCoder *)aCoder
(instancetype)initWithCoder:(NSCoder *)aDecoder
Когда я сохраняю / загружаю игру в первый раз, нет проблем. Когда я нажимаю кнопку "Домой" во второй раз, приложение падает, и я получаю сообщение об ошибке, которое не знаю, как понять.
Что это значит?
2014-01-11 18: 23: 12.254 GameTest[16622:70b]
Завершение приложения из-за необработанного исключения
'Attemped to add nil node', reason: 'Attemped to add nil node to parent: <SKNode> name:'(null)' position:{0, 0} accumulatedFrame:{{inf, inf}, {inf, inf}}'
Я не знаю, где происходит ошибка в моем коде.
Ура Люк
2 ответа
Я столкнулся с подобной проблемой, которая, кажется, затрагивает некоторые типы iPad. Сцена пыталась добавить ноль ребенка.
Добавление блока обработки исключений, кажется, исправило его, хотя я никогда не вижу оператора вывода исключения.
@try {
[self addChild:node];
}
@catch (NSException *exception) {
NSLog(@"Exception adding node :%@",[exception description]);
}
@finally {
}
Спасибо LearnCocos2D,
Ошибка таинственна (на мой взгляд) в ее деталях.
Проблема заключалась в том, как я справился с границей "bodyWithEdgeLoop".
Проблема была также связана с:
(void) encodeWithCoder: (NSCoder *) aCoder
а также
(instancetype)initWithCoder:(NSCoder *)aDecoder
методы.
Я использую книгу Рэй Вендерлиха по iOS Games by Tutorials и допустил ошибку в методе initWithCoder.
Я удалил и заменил тело граничного цикла в методе "encodeWithCoder", но не создал его в методе "initWithCoder".
Так что это решение. При сохранении игры контур тела ребра должен быть удален и заменен в методе "encodeWithCoder", но также должен быть создан в методе "initWithCoder".
Самая большая проблема в том, что Xcode не указал ни на одну строчку в моем коде. Я просто сделал это на "догадку".
Надеюсь, поможет.