ARC的工作原理:它分為兩部分
1)前端編譯器
1.編譯器會給代碼在合適的位置自動添加retain猪半,release/autorelease名斟,它不是垃圾回收機制砂吞,而是跟c相同的使用API對內(nèi)存的管理压昼;
2.retain,引用計算加1,在UIFandation框架內(nèi),對于命名為:alloc,copy菩暗,new,mutablecopy調(diào)用旭蠕,默認引用計算加1停团;
3.release,對于方法內(nèi)的對象掏熬,arc會在方法后面自動添加release的對象調(diào)用佑稠,如果是類對象,arc會在dealloc里面添加對象的release旗芬,dealloc方法會默認調(diào)用舌胶;
4.autorelease,把作用域內(nèi)的對象釋放權(quán)交給父作用域控制疮丛,比如一個類里面的一個方法幔嫂,方法里面有一個對象,使用的是autorelease方法釋放誊薄,即該對象盡管是局部對象履恩,在運行完方法后不會馬上釋放,而要在類作用域里釋放呢蔫;
2)arc優(yōu)化器
1.代碼經(jīng)過前端編譯器后切心,有可能會出現(xiàn)同一對象的多次retain與release,優(yōu)化器是對多余的retain與release去重片吊。