内存管理原则(配对原则):只要出现了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;
 
//当出现类循环应用的时候,只需要把一方面的Strong引用改为weak,并且在.h文件中使用@class 类名的方式,通知.h文件类的存在
 
附:
 
1:项目中ARC与非ARC共存:
 
在project-->Targets-->Build Phases-->Compile Sources选择要对非ARC代码(双击即可)
加上参数:

-fno-objc-arc

【iOS系列】-autorelease的作用-LMLPHP

【iOS系列】-autorelease的作用-LMLPHP

2:把项目改为非ARC

project-->Targets-->Build Settings-->AppleLLVM6.0 - Language - Objective C

或者在输入框中输入language查找较为方便

【iOS系列】-autorelease的作用-LMLPHP

作者:Darren

微博:@IT_攻城师

github:@Darren90

出处:http://www.cnblogs.com/fengtengfei/

05-17 21:30