我的iPad应用程序存在令人沮丧的稳定性问题。在iPad 2上,该应用程序运行良好,没有崩溃,但在iPad 1上,它会随着内存使用率过高而关闭的同样关闭(应用程序停止在设备上运行,调试器更改为“暂停“状态,控制台窗口说”(gdb)“)。但是,内存分配低于5MB,所以我不知道应该做些什么来阻止操作系统关闭我。
我的应用程序使用OpenGLES和RemoteIO音频单元实时运行。所以它一直在处理,但在大量使用情况下不会发生崩溃。
如果不在调试器中运行,应用程序也会更加稳定。
除了高内存使用率之外,iOS是否会因任何原因关闭应用程序?我将如何调试这些原因以便我可以修复它们?
谢谢!
修改
我发现崩溃似乎与我用GL_LINE_STRIP
绘制的顶点数量有关。我在屏幕上有多个对象,每个对象由一个带有2500个顶点的单行条组成。一旦我有~8个物体(总共约20,000个),稳定性变得狡猾。
另外,我正在混合线条。
有什么方法可以解决这个问题,而不只是放弃我的分辨率?
答案 0 :(得分:0)
我发现的解决方案涉及两个部分:
1)我不时在OpenGLES视图上显示一些UIKit视图。每当显示这些视图时,停止所有OpenGLES渲染调用都有助于稳定。
2)每次拨打glFinish()
时拨打glDrawArrays(GL_LINE_STRIP, ... )
也有助于稳定。
将线条的alpha更改为1无效。
BOTTOM LINE :当OpenGLES存在(可能是硬件)问题时,您的应用可能会崩溃而没有堆栈跟踪或错误。
我的猜测是UIKit视图与OpenGLES视图的组合,或者带有大量索引的glDrawArrays调用会使图形“缓冲区”重载(参见后面的段落:http://www.songho.ca/opengl/gl_overview.html#flush)