------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
ARC是一个编译器特征,它提供了对OC对象自动管理内存。ARC让开发者专注于感兴趣的代码和对象的关系,而不用考虑对象的retain和release。ARC在编译时期添加代码,保证对象可用。概念上说,ARC遵循手动引用计数的规则,替开发者,在编译时期添加合适的代码。Xcode提供了一个工具:自动机械得转化为ARC(比如移除retain和release的调用),并帮助开发者解决不能自动迁移的问题。迁移工具将所有文件转化成ARC,开发者也可以对单个文件实施ARC,方便于开发者对某些文件手动引用计数。
ARC评估了对象的生命周期,并自动插入合适的代码在编译时期,从而代替开发者不得不考虑何时需要retain、release和autolease。同编译器替开发者,生成合适的dealloc方法。一般来说,当开发者需要在手动引用计数和ARC配合使用时候,使用传统ARC的Cocoa命名惯例是很重要的1. 1 1 规则
ARC 的规则非常简单:只要还有一个强指针变量指向对象,对象就会保持在内存中。
2 强指针和弱指针
1> 默认所有实例变量和局部变量都是Strong指针
2>弱指针指向的对象被回收后,弱指针会自动变为nil指针,不会引发野指针错误
3 使用注意
1> 不能调用release、retain、autorelease、retainCount
2> 可以重写dealloc,但是不能调用[super dealloc]
3> @property: 想长期拥有某个对象,应该用strong,其他对象用weak
4> 其他基本数据类型依然用assign
5>两端互相引用时,一端用strong、一端用weak