Codename One 在 iOS 中将标签文本视为字符串文字?

Codename One treating label text as string literal in iOS?

我将其构建为日记应用程序的应用程序,用户可以返回并从日历页面查看他们之前的条目(附上屏幕截图)。仅在 iPhone 上(Android 可以),点击大约 20 天后应用程序崩溃。它不会通过电子邮件发送崩溃消息,所以我很确定它达到了内存限制。

在测试中,我保持所有逻辑不变,只删除了生成 spanlabel 以显示日志文本的部分。我仍在从数据库中提取文本,只是没有创建标签并显示它。它停止了崩溃。

所以我的问题是,我能做些什么来确保进入标签的文本不会存储在内存中,以便垃圾收集器可以将其删除?

您确定要从“正确的线程”关闭数据库吗? iOS 对用于数据库访问的线程非常敏感。还要确保先关闭游标,然后再关闭数据库。

我建议通过在游标 close() 方法中放置一个断点并查看谁调用了它来在模拟器上重现它。如果我们的终结器方法到达游标,那么您会遇到一个错误,即在某个地方留下一个打开的游标,您可以在模拟器中重现该游标。此时您可以记录每个游标打开,然后查看哪个游标没有被清理。确保所有游标开口都使用 finally 块进行防御性编码。

我发现问题是由几个非常小的查询连续 运行 引起的。删除那些较大的查询后 运行 而不会崩溃。