0

我已经-(void) handleMemoryWarning:(NSNotification*)在我的 AppDelegate 中处理了函数通知,它做得很好。

我花了很多时间来处理程序中的每个内存泄漏。

但是,在收到 2 级或有时 3 级的内存警告后,我仍然会看到一些内存泄漏并最终导致内存崩溃。

有没有办法在我的应用程序因为内存而崩溃之前收集一些数据并将其发送到我的服务器?

我正在使用 Crittercism 来处理其他异常。

请不要在现有代码中提供减少内存的方法。

4

2 回答 2

1

使用它来清除内存

[[CCDirector sharedDirector] purgeCachedData];
[[CCTextureCache sharedTextureCache] removeAllTextures];
[CCTextureCache purgeSharedTextureCache];
[[CCSpriteFrameCache sharedSpriteFrameCache] removeSpriteFrames];
[CCSpriteFrameCache purgeSharedSpriteFrameCache];

并且在

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
  //you just save your data.
}
于 2012-10-05T07:11:47.377 回答
0

要检查加载的纹理,您可以调用

[[CCTextureCache sharedTextureCache] dumpCachedTextureInfo];

它将打印到控制台所有加载的纹理及其在内存中的大小。为避免所有设备上的内存崩溃,您的应用程序不应使用超过 100 Mb 的内存(我指的是 Retina 设备)。即使这样的数量也会导致内存警告,但不会崩溃。

要检查您的应用程序开始加载资源的位置,您可以使用 Instruments 中的 Activity Monitor。它允许查看您的应用程序使用了多少内存。附加仪器会导致使用内存增加,但是如果您的应用程序在附加活动监视器时会崩溃并且没有它不会崩溃,这意味着您的内存使用量很关键,必须减少。

于 2012-10-05T07:04:45.560 回答