2012-07-13 46 views
0

有时我正面临控制台中的“接收到的内存警告”。看到这里:如何捕捉应用程序中的警告崩溃报告:收到的内存警告

2012-07-13 11:39:54.344 PROJ42 [25255:707] Received memory warning. 

该应用程序不会崩溃。但我想解决这个警告。
有没有办法找出为什么我得到这个警告并发送报告? 如果是的话,我该怎么做?

信息:我知道我可以用仪器运行来找到这样的警告。但我想知道是否有可能从终端用户的设备上捕获此警告?

我该如何捕捉这些警告?

回答

1

我认为这是没有内置的方式来知道发生了什么......

你可以尝试保存一些指示NSString每个地方你分配新的对象/开放新资源的地方(如“ MAINVIEW :: createNewImage =>页头 “或” MAINVIEW :: createNewImage =>加载资源“),然后进行内部

- (void)didReceiveMemoryWarning 

的该字符串的内容的NSLog这可能需要时间,但CA ñ表明你的问题的地方。

+0

谢谢,这个答案对我来说已经足够了。 – brush51 2012-07-13 10:36:22

2

UIViewController有可以覆盖被调用的方法:

- (void)didReceiveMemoryWarning 

这是被调用,并在其中您可以编写自定义代码的方法。

+0

我知道这个方法。但是我怎样才能捕捉到警告信息呢?有时会出现Warning Level = 1等等。或者更多信息**为什么**我收到警告。 – brush51 2012-07-13 10:06:00

+0

据我所知,没有办法找出内存不足的原因,该方法也没有任何争论。 – werner 2012-07-13 10:50:13

+0

当在后台运行的应用程序和其他应用程序需要更多内存时,也会发送此警告。所以你应该总是实现这个方法并释放尽可能多的内存。这并不一定表明你的应用消耗了太多内存。无论您的应用程序具有哪种警告级别,也无法确定您的应用程序是否会在发出此类警告后死亡。即使警告级别设置为1,也可能在后台死亡。 – Kerni 2012-07-13 12:54:55

1

由于在您的应用程序中使用了大量的内存,所以会发生内存警告。尝试释放内存。