OC中的内存管理,就是引用计数(reatinCount),是一种简单而有效的管理对象生命周期的方式。对象经过retain和release的方法操作改变引用记数,当引用记数为零时,便自动释放内存。
引用计数(内存管理)的思考方式:
1)自己生成的对象,自己持有
2)非自己生成的对象,自己也能持有
3)不再需要自己持有的对象时释放
4)非自己持有的对象无法释放
对象操作与OC方法的对应:
生成并持有对象:alloc/new/copy/mutableCopy等
持有对象: retain方法
释放对象: release方法
废弃对象: dealloc方法
这些OC内存管理的方法其实并不包括在OC语言中,而是包含在Cocoa框架中,Cocoa框架中Foundation框架类库的NSObject类负担内存管理的职责。从 iOS 7 开始,这些方法被移动到了 Runtime 当中,可以在 objc4-680 NSObject.h 找到。
MRC(MannulReference Counting)是手动管理内存,即需要程序员来做retain、release操作。
ARC (Automatic Reference Counting)是苹果引入的一种自动内存管理机制,会根据引用计数自动监视对象的生存周期,实现方式是在编译时期自动在已有代码中插入合适的内存管理代码以及在 Runtime 做一些优化。
网友评论