我的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
有人可以指出我需要进行更高级的追踪或逆向工程等吗?
答案 0 :(得分:0)
您是否尝试过对应用进行构建和分析?这有助于找到基于alloc-release的内存泄漏,有时可能会被忽略。您还可以将库与导入项目的源文件一起使用,然后进行构建和分析以在库上运行分析。
答案 1 :(得分:0)
如果您的某些对象将自己添加为NSNotificationCenter的观察者,请确保在取消分配这些对象之前执行removeObserver: