使用Qt 4.5时如何修复我的应用程序泄漏?

时间:2009-05-14 19:39:29

标签: objective-c cocoa qt

除了针对Qt 4.5构建之外,我的代码没有任何更改,当我运行我的应用程序时,我收到以下警告消息:

*** _NSAutoreleaseNoPool(): Object 0x50a1b0 of class NSCFNumber autoreleased with
no pool in place - just leaking

我的代码中没有使用任何Objective-C,但Qt 4.5使用的是基于Cocoa的后端而不是Carbon。

我不确定如何解决和修复此错误消息。任何人都有线索?

1 个答案:

答案 0 :(得分:6)

通常情况下,当您在代码中看到此问题时,您可以在NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];之前和[pool release];之后将违规代码块括起来。您可以在_NSAutoreleaseNoPool函数上设置断点,只需查看堆栈爬网以查看有问题的代码是什么。请记住,-autorelease在Cocoa中随处可见,因此它可能不是Qt代码中触发它的自动释放的特定调用。

然而,由于这是Qt的代码正在执行此操作,并且,最后我检查过,Qt / Cocoa仍然是一项正在进行中的工作,您应该只提交错误报告并向其堆栈爬行,并等待他们解决它。