OC的ARC是编译时特性 :
系统会在编译时适当位置加上 release ,autorelease ,retain,
程序运行流程 : 预编译—>编译—>汇编—>链接—>运行
在ARC 中 已经不能在使用release, autorelease, retain 但copy 依然可以使用并保留其原本的属性
-(void)dealloc{
在ARC 中 dealloc 方法中不能使用 [super dealloc]
但是 dealloc 方法依然有效(当前对象即将释放 执行该方法) 我们可以在这里进行一些操作 :例如 :移除通知 ,移除KVO
}
在ARC 中 :局部对象不需要内存管理 ,出了方法后会自动释放
全局对象也不需要管理内存,但是要注意交叉(循环)引用
在ARC 中依然有内存泄露,循环导入的话还是会引起内存泄露 只要将其中一个引用改成weak即可
weak的存在就是为了防止循环引用;
strong :强引用
强引用指向的对象不会被释放 一个对象没有强引用指向会立即释放
weak :弱引用
弱引用指向的对象释放时 ,会自动置空
//创建对象指针当没有修饰词时 默认为strong
在ARC 中想要主动释放对象 只需要将strong 的指针置为空就好了,不需要担心过度释放;
时间: 2024-10-20 12:08:48