ARC:(Automatic Refrence Counting)自动引用计数
ARC是ios5.0(即2011年WWDC大会上)提出来的一种内存管理的新特性.解决了手动管理内存的烦恼.
使用ARC编译器会在合适的地方自动帮我们插入release以及autorelease,不需要手动添加,ARC是编译时特性,而非运行时特性.使用ARC编译器会帮我们执行一些优化.
ARC使用强弱指针管理内存
强指针
所有对象的指针默认为强指针
__strong修饰的是强指针
强指针释放:
1.局部变量释放,对象被释放
2.指针为空,对象被释放.
3.__weak修饰的指针立即释放(新创建的对象不能用__weak修饰)
强指针避免循环引用
1.A类里面引用B类的对象,同时B类里面使用A类的对象,为了避免循环引用,一方要使用weak去修饰.
ARC特性:ARC不能使用release,autorelease以及retain的关键字,使用dealloc方法的时候,不能使用[super dealloc];
在iOS 5以后,苹果引入了ARC技术和strong和weak对象变量属性。
事实上,strong关键字其实相当于之前版本的retain关键字,如果一个属性变量使用了strong关键字修饰,那么它指向的对象的引用计数就会+1(它拥有这个对象);而如果一个属性变量使用了weak关键字修饰,那么它指向的对象的引用计数则不变(它不拥有这个对象)。在此基础上,解释ARC技术的规则就会变得很简单:只要还有一个strong指针指向对象,那么对象就不会被销毁,反之,若没有strong指针指向对象,那么对象就会被立即销毁。而weak指针指向的对象若被销毁,那么weak指针会被赋值为nil,这样做的好处是防止野指针。
网友评论