ARC

作者: 志在交流 | 来源:发表于2018-06-06 10:05 被阅读0次

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,这样做的好处是防止野指针。

相关文章

网友评论

      本文标题:ARC

      本文链接:https://www.haomeiwen.com/subject/jbnvsftx.html