1、OC的内存管理
OC是通过引用计数进行内存管理的,其核心思想遵循“谁创建谁释放;谁引用谁管理”。
OC的内存管理方式有两种:
一种是MRC(即手动内存管理)。当我们使用alloc、new创建对象时,或向对象发送retain、copy消息时,对象的引用计数会+1;当向对象发送release、autorelease消息时,对象的引用计数会-1;当对象的引用计数为0时,该对象会调用dealloc方法进行释放。
另一种是ARC(即自动内存管理)。IOS5时推出,是编译时特性,在编译代码时,会在适当的位置加上retain、release、autorelease。在ARC中引用了两个新的修饰词:strong、weak。strong是强引用,强引用指向的对象不会被释放,一个对象没有强引用指向时会立即释放;weak是若引用,弱引用指向的对象在释放时自动置为nil。在ARC中判断一个对象是否被释放,就看是否有strong指向它。
2、内存管理混合方式
在Build Phase里面的Compile Source里面找到需要特殊处理的文件,加上编译选项(Compiler Flags)。
- 在MRC工程中添加ARC文件,给ARC文件添加-fobjc-arc;
- 在ARC工程中添加MRC文件,给MRC文件添加-fno-objc-arc;
3、weak和assign的区别
weak和assign都不会增加引用计数,区别是修饰的对象在释放时所作的操做不同,weak是会把对象置为nil,assign则不会,assign一般适用于基本数据类型。
网友评论