ARC的工作原理:它分为两部分
1)前端编译器
1.编译器会给代码在合适的位置自动添加retain,release/autorelease,它不是垃圾回收机制,而是跟c相同的使用API对内存的管理;
2.retain,引用计算加1,在UIFandation框架内,对于命名为:alloc,copy,new,mutablecopy调用,默认引用计算加1;
3.release,对于方法内的对象,arc会在方法后面自动添加release的对象调用,如果是类对象,arc会在dealloc里面添加对象的release,dealloc方法会默认调用;
4.autorelease,把作用域内的对象释放权交给父作用域控制,比如一个类里面的一个方法,方法里面有一个对象,使用的是autorelease方法释放,即该对象尽管是局部对象,在运行完方法后不会马上释放,而要在类作用域里释放;
2)arc优化器
1.代码经过前端编译器后,有可能会出现同一对象的多次retain与release,优化器是对多余的retain与release去重。
网友评论