UIApplication中的内存泄漏

时间:2012-06-27 17:12:44

标签: iphone

获取内存泄漏对象 NSDate 和负责的库是UIKit负责的框架是 UIApplication:sendAction:to:from:forEvent:为什么会这样。我该如何解决这个内存泄漏问题。我根本不使用界面构建器。全部以编程方式完成

Event Type  Responsible Library Responsible Caller
Malloc      UIKit                   [UIApplication sendAction:to:from:forEvent:]
Autorelease UIKit                   [UIApplication sendAction:to:from:forEvent:]
Retain      UIKit                   [UIApplication sendAction:to:from:forEvent:]
Release     Foundation           [NSAutoreleasePool release]

由于

1 个答案:

答案 0 :(得分:3)

不介意仪器说负责的图书馆是UIKit。这只意味着内存的实际分配是在UIKit中完成的,但我几乎可以肯定泄漏的责任在你的代码中。这几乎是我对内存泄漏的经验,Instruments / Xcode发现负责的库是一个SDK框架。

我的建议是检查您分配的NSDate并确保它们全部已发布。有时,泄露的对象只与Instruments报告的类型间接相关。

最后发现泄漏原因的最有效方法是检查仪器显示泄漏时执行的代码(您使用哪个视图?哪个任务?等)

在没有看到你的代码的情况下,我可以说没有更精确的说法。

编辑:

查看你的代码,我建议你检查一下你会发生什么:

pauseStart = [[NSDate dateWithTimeIntervalSinceNow:0] retain];

如果pauseStart引用一个对象,那么像这样分配会产生泄漏,因为你丢失了对前一个对象的引用;你可以这样做:

[pauseStart release];
pauseStart = [[NSDate dateWithTimeIntervalSinceNow:0] retain];

或更好

self.pauseStart = [NSDate dateWithTimeIntervalSinceNow:0];

(我假设pauseStart是一种保留属性)。

希望这有帮助。