ARC编译器特性:编译时自动坚持测到retain,然后生成release代码,并不是自动回收
而java的垃圾回收机制是运行时检测。
/*
ARC的判断准则:只要没有强指针指向对象,就会释放对象
1.ARC特点
1> 不允许调用release、retain、retainCount
而java的垃圾回收机制是运行时检测。
/*
ARC的判断准则:只要没有强指针指向对象,就会释放对象
1.ARC特点
1> 不允许调用release、retain、retainCount
2> 允许重写dealloc,但是不允许调用[super dealloc]
3> @property的参数
* strong :成员变量是强指针(适用于OC对象类型)
* weak :成员变量是弱指针(适用于OC对象类型)
* assign : 适用于非OC对象类型
4> 以前的retain改为用strong
指针分2种:
1> 强指针:默认情况下,所有的指针都是强指针 __strong
2> 弱指针:__weak
*/
内存分析
ARC的应用
1、旧项目中原本有很多retain、release的代码,不用手动修改,运用Xcode的弄能实现ARC
Edit—>refactor(重构)—>Convert to Objective -C ARC—>check—>next—>save
2、运用第三方技术,如果第三方技术不支持ARC,怎么办?同时兼容ARC与非ARC
点击项目—>build phase—>compile sourse—>双击(回车)修改的文件—>写上-fon-objc-arc(不用ARC)-f-objc-arc(用ARC)
ARC--循环引用
当两端循环引用的时候,解决方案:
1》ARC
一端用strong,一端用weak
2》非ARC
一端用retain,一端用assign
内存分析