zoukankan      html  css  js  c++  java
  • 【iOS系列】-autorelease的作用

    内存管理原则(配对原则):只要出现了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

    2:把项目改为非ARC

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

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

      

    作者:Darren

    微博:@IT_攻城师

    github:@Darren90

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

  • 相关阅读:
    常用的android弹出对话框
    Android 启动后台运行程序(Service)
    java 日期获取时间戳
    stringbuffer与stringbuilder的区别
    Linux记录-sysctl.conf优化方案
    Linux记录-salt分析
    Hadoop记录-fair公平调度队列管理
    Linux记录-GC分析
    Hadoop记录-hdfs转载
    Linux记录-salt-minion安装
  • 原文地址:https://www.cnblogs.com/fengtengfei/p/4309771.html
Copyright © 2011-2022 走看看