关于initWithCoder导致的内存泄露
2012-06-08 11:22
197 查看
来自 http://longtimenoc.com/archives/关于initWithCoder导致的内存泄露
initWithCoder 一般是通过 [NSUnarchiver unarchiveObjectWithData:NSData] 调用的, 虽然我们可能感觉代码写得没有什么问题, 但用 Performance Tool 检测还会有 leak。如果你确定自己的代码没有任何问题, 那么就可以无视 Performance Tool 的检测。
之所以会检测到内存泄露, 一个可能的原因就是 unarchiveObjectWithData: 返回的是一个 autorelease 对象, 而在 Performance Tool 检测时, autoreleasePool 还没有释放。
因此我们可以尝试直接在 unarchiveObjectWithData: 这个方法附近范围新建一个 autoreleasePool 然后 release 它(参考 main.m 中 autoreleasePool 的创建和 release), 如果 Performance Tool 不再提示内存泄露, 那么就证明的确没有内存泄露了。
initWithCoder 一般是通过 [NSUnarchiver unarchiveObjectWithData:NSData] 调用的, 虽然我们可能感觉代码写得没有什么问题, 但用 Performance Tool 检测还会有 leak。如果你确定自己的代码没有任何问题, 那么就可以无视 Performance Tool 的检测。
之所以会检测到内存泄露, 一个可能的原因就是 unarchiveObjectWithData: 返回的是一个 autorelease 对象, 而在 Performance Tool 检测时, autoreleasePool 还没有释放。
因此我们可以尝试直接在 unarchiveObjectWithData: 这个方法附近范围新建一个 autoreleasePool 然后 release 它(参考 main.m 中 autoreleasePool 的创建和 release), 如果 Performance Tool 不再提示内存泄露, 那么就证明的确没有内存泄露了。
相关文章推荐
- 关于initWithCoder导致的内存泄露
- 关于initWithCoder
- 关于DLL工程中存在全局变量可能导致MFC内存泄露误报的原因分析及解决办法
- 关于DLL工程中存在全局变量可能导致MFC内存泄露误报的原因分析及解决办法
- 关于DLL工程中存在全局变量可能导致MFC内存泄露误报的原因分析及解决办法
- 关于hashcode修改导致内存泄露的问题
- Android 非静态内部类导致的内存泄露(非static内部类)
- Handler可能导致的内存泄露及其优化
- initWithCoder: 与initWithFrame:的区别
- loadView/viewDidLoad/initWithNibName/awakeFromNib/initWithCoder的用法
- loadView和viewDidLoad及initWithNibName/awakeFromNib/initWithCoder
- 关于MFC下检查和消除内存泄露的技巧
- loadView、viewDidLoad、initWithCoder、initWithNibName、awakeFromNib的调用时间及用法
- ASP.NET动态Assembly导致的内存泄露
- [Android] 关于WebView的内存泄露问题
- Unity3D关于内存优化,内存泄露、多线程、引用C++的dll的问题研究
- initWithNibName/awakeFromNib/initWithCoder
- 内存泄露调试技巧(转)-关于MFC下检查和消除内存泄露的技巧
- initWithCoder/loadView等区别
- 关于Android 的内存泄露及分析