我正在使用红宝石动作。以下是我的环境的详细信息。
$ 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)
当我运行我的应用程序并单击一个按钮,假设要加载使用格式构建的表单时,我的应用程序突然崩溃并显示此错误消息。
* 模拟器会话以错误结束:错误域= DTiPhoneSimulatorErrorDomain Code = 1“模拟的应用程序 退出。“UserInfo = 0x10011e200 {NSLocalizedDescription =模拟 application quit。,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,我还必须更新我的一些宝石。
如何解决此问题或对此进行问题排查?
答案 0 :(得分:0)
当您尝试访问已解除分配的对象时,几乎总是这样。尝试将变量更改为实例变量(@myvar
)或全局变量($myvar
),看看是否能解决问题。显然,你不想在生产中使用全局,但要试一试。
答案 1 :(得分:0)
当您点击该断点时要做的第一件事就是获得回溯。通常这会指向正确的方向。查看信息的另一种方法是打开控制台,然后运行/崩溃您的应用程序。看看发生了什么。
正如@Jamon所说,当你没想到它时,它通常会被GC收获。