追踪内存泄漏

时间:2011-02-21 12:24:15

标签: objective-c cocoa memory-leaks asyncsocket

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

   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

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

2 个答案:

答案 0 :(得分:0)

您是否尝试过对应用进行构建和分析?这有助于找到基于alloc-release的内存泄漏,有时可能会被忽略。您还可以将库与导入项目的源文件一起使用,然后进行构建和分析以在库上运行分析。

答案 1 :(得分:0)

如果您的某些对象将自己添加为NSNotificationCenter的观察者,请确保在取消分配这些对象之前执行removeObserver: