performSelectorOnMainThread中的内存泄漏

时间:2012-01-04 17:29:23

标签: iphone multithreading memory-management memory-leaks

我在我的应用上遇到了内存管理方面的一些问题。该应用程序将正常运行一段时间,然后我将收到收到内存警告错误。然后我通过Profile运行我的应用程序以查找内存泄漏。在跟踪泄漏后,我在这条线上得到了100%的内存泄漏:

    [self performSelectorOnMainThread:@selector(loadingProgress:) withObject:[NSNumber numberWithFloat:0.0] waitUntilDone:NO];

我可能天真,但我不知道这可能会泄漏...

任何人都知道如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

唯一可能的泄漏是您在线程中过度保留NSNumber实例。但是为了导致崩溃,你必须分离成千上万的线程,这本身就是一个非常严重的问题。

请注意,Leaks仪器会显示泄漏的分配位置,而不是过度保留的位置。

同样,泄漏只显示泄漏。它不会显示分配仍然由全局对象图引用的分配的增加。即如果一个对象可以通过从全局变量开始的引用路径到达,那么它就不是泄漏。

试试heapshot analysis。随着时间的推移,它非常善于发现这种吸积。