0

我的可可应用程序中存在内存泄漏,我已尽一切可能找到它的所有者,但一直无法找到。几天前,当我实现AsyncSocket框架的 GCD 版本时,泄漏就开始了。我不知道是我自己的代码导致泄漏出现还是库本身。Instruments 不提供良好的回溯。唯一模糊的一件事:

   0 libSystem.B.dylib calloc
   1 CoreFoundation __addHandler2
   2 Foundation +[__NSObserver isAnObserver:]
   3 Foundation -[NSNotificationCenter removeObserver:name:object:]
   4 Foundation -[NSNotificationCenter removeObserver:]
   5 Foundation -[NSRunLoop(NSRunLoop) dealloc]
   6 CoreFoundation CFRelease
   7 CoreFoundation __CFFinalizeRunLoop
   8 libSystem.B.dylib _pthread_tsd_cleanup
   9 libSystem.B.dylib _pthread_exit
  10 libSystem.B.dylib start_wqthread

有人可以向我指出进行更高级跟踪或逆向工程等所需的方向吗?

4

2 回答 2

0

如果您的某些对象将自己作为观察者添加到 NSNotificationCenter,请确保在这些对象被释放之前执行 removeObserver:。

于 2011-02-21T12:43:01.237 回答
0

您是否尝试在您的应用程序上进行构建和分析?这有助于发现有时可能被忽略的基于分配释放的内存泄漏。您还可以将库与导入项目的源文件一起使用,然后进行构建和分析以对库运行分析。

于 2011-02-21T12:32:17.547 回答