我看到我的应用程序被 iOS 终止并显示内存不足消息,但是,在 Allocations Instrument 中跟踪应用程序的进度时,我看到很多 malloc 似乎发生在我的代码之外已经写好了。
我没有发现任何泄漏,所以我假设这些分配应该存在。问题是,因为我不确定为什么要分配它们,所以我不确定我可以做些什么来优化应用程序并防止操作系统放弃我的应用程序。
有谁知道为什么要分配内存,或者有什么办法让我找出答案吗?
这是 Instruments 中显示 malloc 的几个镜头。在第二个镜头中,所有分配都具有相同的堆栈跟踪。
编辑
我'显示单个大图像作为 UIView 背景 (1024x768),然后在包含两个 550px 正方形图像的图像之上覆盖带有一些自定义绘图的较小(600px 正方形)UIView 和第三个 UIView(550px 正方形)覆盖。
我猜这不合适,而且可能有更好的方法来实现我需要的应用程序运行的 View 组合。
这应该可以在 iPad 上实现吗?
最佳答案
我认为这里没有太多信息可以继续 - 如果您添加更多关于此 View 在您的应用程序中正在做什么的信息,您可能会得到一些更明智的建议。
从屏幕截图来看,似乎正在分配大块来显示图像。
鉴于我可能会猜测您正在尝试显示一些非常大的图像,或者您的 UIView 很大,或者内存中有更多的 UIView 需要显示当前屏幕。
我想准确追踪它们来自何处的最简单方法是禁用您怀疑的应用程序部分,然后再次运行并查看分配是否仍然发生。
编辑
所有图像的尺寸都与您显示的尺寸相同吗? (即,您是否尝试将 5M 照片显示为 1024x768 背景?)如果不是,您可能需要将它们缩小到显示它们的大小,或者至少更接近。
如果您不需要透明度,请确保将所有 View 设为不透明。
关于iphone - 看到 malloc 分配大块内存 - 试图找出原因 (iPhone),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3628662/