sch*_*hwa 19 memory debugging macos cocoa objective-c
内存(和资源)泄漏发生.你怎么确定他们没有?
您会建议哪些提示和技巧可以帮助避免首先造成内存泄漏?
一旦您的应用程序泄漏,您如何追踪泄漏源?
(哦,请避免"只使用GC"答案.在iPhone支持GC之前,这不是一个有效的答案,即便如此 - 可能会泄漏GC上的资源和内存)
mma*_*alc 21
在XCode 4.5中,使用内置的静态分析器.
在3.3之前的XCode版本中,您可能必须下载静态分析器.这些链接向您展示如何:
为了避免首先造成内存泄漏,请使用Clang Static Analyzer - 毫不奇怪 - 在Mac OS X 10.5上分析您的C和Objective-C代码(还没有C++).安装和使用它是微不足道的:
cd到项目目录.scan-build -k -V xcodebuild.(还有一些额外的约束等,特别是你应该在其"调试"配置中分析一个项目 - 请参阅http://clang.llvm.org/StaticAnalysisUsage.html了解详细信息 - 但这或多或少归结为什么.)
然后,分析器会为您生成一组网页,显示可能的内存管理以及编译器无法检测到的其他基本问题.
如果您的项目不针对Mac OS X桌面,则还有其他一些细节:
(这与这个问题大致相同.)
mma*_*alc 10
如果您始终使用访问器方法将值分配给实例变量(除了init*和dealloc方法),您可以让自己的生活更加简单.除了确保正确触发任何副作用(例如KVO更改通知)之外,与使用retains和s 洒你的代码相比,它使得复制粘贴或其他逻辑错误的可能性大大降低.release秒.
声明访问器时,应始终使用Objective-C 2属性功能.属性声明使访问器的内存管理语义显式化.它们还为您提供了一种简单的方法来与您的dealloc方法进行交叉检查,以确保您已经释放了您声明为retain或的所有属性copy.
Instruments Leaks工具非常适合发现某类内存泄漏.只需使用"使用Performance Tool启动"/"Leaks"菜单项即可通过此工具自动运行您的应用程序.适用于Mac OS X和iPhone(模拟器或设备).
Leaks工具可以帮助您找到泄漏源,但无法帮助您查找泄漏内存的保留位置.
| 归档时间: |
|
| 查看次数: |
10700 次 |
| 最近记录: |