内存管理原则(配对原则):只要出现了new,alloc,retain方法,就要配对出现release,autorelease
1:对象存入到自动释放池中,当这个池子被销毁的时候他会对池子中所有的对象进行一次release操作。
2:autorelease 加入几次,就会被释放几次
3:不管你这个对象时在@autoreleasepool 之内创建的还是在之外创建的,只要你在池子中调用了autorelease那么这个对象就会被放入到池子中
4:autorelease的作用域:是代码块结束。
@autoreleasepool { }
ARC机制: ARC,不用程序员在去管理内存
1.强指针 Strong:只要有强指针指向一个对象,那么系统就不会回收该对象
2.弱指针 weak:只要没有强指针指向对象,系统立即回收该对象,-弱指针不影响,对象被回收
//默认情况下,所有的指针都是强指针类型
//ARC机制 strong 对象,手动内存管理的retain关键字,(一定能够都是应用在对象类型变量上)
//ARC机制中的 weak 对象手动内存管理的assign关键字,(一定能够都是应用在对象类型变量上)
//ARC机制下 基本数据类型的@property参数使用,与手动内存管理完全一致
@property (nonatomic,assign)int age;
@property (nonatomic,assign)int age;
//当出现类循环应用的时候,只需要把一方面的Strong引用改为weak,并且在.h文件中使用@class 类名的方式,通知.h文件类的存在
附:
1:项目中ARC与非ARC共存:
在project-->Targets-->Build Phases-->Compile Sources选择要对非ARC代码(双击即可)
加上参数:
-fno-objc-arc
2:把项目改为非ARC
project-->Targets-->Build Settings-->AppleLLVM6.0 - Language - Objective C
或者在输入框中输入language查找较为方便
作者:Darren
微博:@IT_攻城师
github:@Darren90