使用“2x”按钮时,iPhone OpenGL ES 应用程序在 iPad 上被杀死
Posted
技术标签:
【中文标题】使用“2x”按钮时,iPhone OpenGL ES 应用程序在 iPad 上被杀死【英文标题】:iPhone OpenGL ES app killed on iPad when using "2x" button 【发布时间】:2011-05-12 13:26:14 【问题描述】:嘿,我遇到了一个奇怪的问题。
我有一个仅适用于 iPhone 的 OpenGL ES 应用程序,它可以在所有支持的 iPhone 和 iPod touch 型号上正常运行。
在 iPad 上运行时,它按预期在 iPhone 大小的窗口上运行,按“2x”按钮一次,窗口按预期放大到两倍大小,应用程序继续运行没有问题。
但是,如果用户快速点击“2x”按钮 3 或 4 次,应用程序将被 Program received signal: "0"
消息杀死(据我了解,这意味着操作系统因使用太多内存而杀死了我的应用程序,是对吗?)
我真正不明白的是,当 iPad 上下缩放窗口时,我的应用程序可能会占用更多内存?据我所知,我的应用程序甚至无法判断 iPad 是否以及何时执行此操作。我不知道我使用 OpenGL ES 的事实是否相关,但这个问题在我拥有的任何 Cocoa Touch 应用程序上都不会发生 - 尽管它也不会在其他两个 OpenGL ES 应用程序上发生我有。而且这个应用确实比其他任何应用都使用更多的内存。
有人曾经甚至听说过这个问题吗?谷歌搜索什么也没给我。
【问题讨论】:
【参考方案1】:由于没有人发布直接答案(您的情况可能有点模糊),我有一个关于如何继续前进并收集更多关于可能导致您的问题的信息的建议。
查看 Xcode 中可以识别内存泄漏的 Instruments: Instruments User Guide
或者为了更友好的介绍,这里有一个解决性能问题的视频,包括内存泄漏(以及如何找到它们)。 ios Performance Optimization Video
【讨论】:
嗨,格雷格,感谢您的回答。我已经使用 Instruments 实用程序上的 Leaks、Allocations 和 Memory Monitor 工具检查了内存使用情况。在任何情况下都没有检测到内存泄漏。除非用户在 iPad 上快速上下缩放窗口,否则该应用程序将运行良好并且在任何设备上都不会收到内存警告。我不知道缩放动画会如何影响我的应用。 那么祝你好运,我只是在学习 iOS 平台,所以我能提供的所有帮助都用完了! :) 我制作的一个测试应用程序在加载时开始崩溃,而我看不到任何东西导致它。我创建了一个新项目并复制了崩溃的代码 - 问题就消失了。可以试试吗? @filipe - 在您点击 2X 放大按钮之前和之后,内存监视器会报告什么?您的应用程序的绝对内存大小是否会增长?此外,如果您在点击放大按钮之前和之后在 ObjectAlloc 中进行堆拍摄,然后在再次点击按钮后进行另一次堆拍摄,是否有任何内存元素显示为在每次按下该按钮后添加?【参考方案2】:只是添加这个,所以这里有某种答案......
我从来不知道 2x 按钮到底是怎么回事。
我当时修复它的方法是尽可能优化内存使用,延迟加载所有我能做的,并在不使用时再次卸载。 奇怪的是,在任何受支持的 iPhone 或 iPod touch 机型上运行时,它从不抱怨内存问题,即使是较旧的机型,但它只有在反复快速按下 2x 按钮时才会在 iPad 上被杀死......我想这总是会的对我来说是个谜。
【讨论】:
以上是关于使用“2x”按钮时,iPhone OpenGL ES 应用程序在 iPad 上被杀死的主要内容,如果未能解决你的问题,请参考以下文章
在 iPhone 上的 openGl 应用程序的背景中播放视频
在 Ipad 模式下查看时,仅 Iphone 应用程序切入屏幕底部 (2x)
使用 OpenGL 和纹理在同一窗口中查看 2x2 网格中的多个图像