内存管理介绍
应用程序的内存管理即在运行时分配内存使用,并且在完成后释放内存的过程
OC中有两种应用程序管理方法
- 我们接下来使用的手动保留-释放(MRR): 由Foundation类和NSObject运行时环境一起提供了引用计数环境
自动引用计数(ARC):使用与MRR一样的引用计数系统,只是在编译时帮助插入适当的内存管理方法,查看ARC开发文档
- Xcode内置的
Clang Static Analyzer
会识别编译时的代码问题 - 在Technical Note TN2239、iOS Debugging Magic中介绍了很多工具和计数,特别是可以使用
NSZombie
来帮助找到过度释放的对象 - 可以使用
Instrument
工具来追踪引用计数,并且检查内存泄漏;参考Collecting Data on Your App.
补充:
这些有关OC内存管理的方法,实际并不包含在该语言中,而是包含在Cocoa框架中用于iOS、OS X开发。Cocoa框架中的Foundation框架类库的NSObject类承担内存管理职责。OC内存管理中的alloc/retain/release/dealloc
方法分别指向NSObject类的alloc类方法和retain、release、dealloc实例方法
内存管理中的引用计数由
NSObject protocol
以及标准方法的命名约定组合提供NSObject中定义了
dealloc
方法,会在取消分配对象时自动调用内存泄漏:就是应当废弃的对象在超出其生命周期后继续存在