Как я могу узнать, почему мое приложение, работающее в симуляторе, внезапно падает

Я использую рубиновое движение. Ниже приведены подробности моего окружения.

$ motion --version
2.9
$ bundle
Using bubble-wrap (1.4.0) 
Using motion-require (0.0.7) 
Using formotion (1.6) 
Using motion-layout (0.0.1) 
Using thor (0.18.1) 
Using rubymotion_generators (0.1.0) 
Using bundler (1.3.5) 

Когда я запускаю свое приложение и нажимаю кнопку, которая, как предполагается, загружает форму, созданную с помощью формирования, мое приложение внезапно падает с этим сообщением об ошибке.

* Сеанс симулятора завершился с ошибкой: Error Domain=DTiPhoneSimulatorErrorDomain Code=1 "Имитированное приложение закрылось." UserInfo=0x10011e200 {NSLocalizedDescription= Симулированное завершение работы приложения. DTiPhoneSimulatorUnderlyingErrorCodeKey=-1}

Бег с rake debug=1 Я вижу следующее:

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0xc7243c89
0x0081309f in objc_msgSend ()
(gdb) 

Мое приложение работало отлично до обновления rubymotion, и как только я обновил rubymotion, мне также пришлось обновить некоторые из моих драгоценных камней.

Как я могу решить эту проблему или устранить ее?

2 ответа

Первое, что нужно сделать, когда вы дойдете до этой точки останова, - это получить обратный след. Часто это укажет вам правильное направление. Другой способ просмотреть информацию - открыть консоль, а затем запустить / завершить работу приложения. Посмотри, что происходит.

Как говорит @Jamon, GC обычно пожинает это, когда вы этого не ожидали.

Это почти всегда, когда вы пытаетесь получить доступ к объекту, который был освобожден. Попробуйте изменить вашу переменную на переменную экземпляра (@myvar) или глобальный ($myvar) и посмотрите, решит ли это проблему. Очевидно, вы не хотите использовать глобал в производстве, но попробуйте.

Другие вопросы по тегам