NSTimer不间断内存增加 – iOS的错误?

我正在使用仪器计算iPad应用程序的内存问题 – 查看总体分配的字节数。 我的NSTimer导致字节不断增加,同时注释它会导致内存使用保持静态。

从我的视图控制器的viewDidLoad:

tickTime = 1.0 / 30.0; tickTimer = [NSTimer scheduledTimerWithTimeInterval:tickTime target: self selector:@selector(update2) userInfo: nil repeats: YES]; 

而方法update2:

 - (void) update2 { } 

正如你所看到的,这个方法没有任何东西 – 但是应用程序的内存使用量不断增长。 如果我注释掉设置定时器的行,内存使用率保持不变。

这是iOS SDK中的错误吗? 有谁知道一个解决方法?

这是一个pebkac问题 – 我正在研究Instruments中的“Overall Bytes”,这是衡量应用程序曾经使用过的所有内存的一个度量,而不是衡量当前的内存使用情况。

我仍然好奇如何衡量应用程序当前的总内存使用情况 – “实时字节数”大约为1.5mb,即使加载了至less20mb的.png。

如果你通过用户界面进行操作,内存使用是否会下降? 也就是说,如果你点击一个button或什么的?

有什么东西挂在这不应该? 仪器提供了更多的信息,而不仅仅是你的堆越来越多。

一般情况下,要避免一个定时器以1/30秒为间隔。

  • 如果它在主线程上,它会使您的应用程序的响应非常波动(最好)或完全没有响应

  • 如果您正在尝试进行animation制作,请使用Core Animation(或各种Open GL模式之一)

  • 它会吃电池寿命。

我相信计时器可能会“开火”来让iPhone快速处理。 我有这个相同的问题,不得不减慢计时器。