内存管理介绍

官方文档地址

应用程序的内存管理即在运行时分配内存使用,并且在完成后释放内存的过程

OC中有两种应用程序管理方法

  1. 我们接下来使用的手动保留-释放(MRR): 由Foundation类和NSObject运行时环境一起提供了引用计数环境
  2. 自动引用计数(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方法,会在取消分配对象时自动调用

内存泄漏:就是应当废弃的对象在超出其生命周期后继续存在