zoukankan      html  css  js  c++  java
  • OC Autorelease

    一、基本用法

    1.会将对象放到一个自动释放池中

    2.当自动释放池被销毁时,会对池子里的所有对象做一次release

    3.会返回对象本身

    4.调用完autorelease方法后,对象的计数器不受影响(销毁时影响)

    二、好处

    1.不需要关系想你对象释放的时间,

    2.不需要再关心什么时候调用release

    三、使用注意

    1.占用内存比较大得对象,不要随便使用autorelease,应该使用release来精确控制

    2.占用内存较小的对象使用autorelease,没有太大的影响

    /////////////////

    /////////////////

    (一)ARC的判断准则:

    只要没有强指针指向对象,对象就会被释放。

    (二)指针分类:

      (1)强指针:默认的情况下,所有的指针都是强指针,关键字strong

      (2)弱指针:__weak 关键字修饰的指针

    (三)ARC的特点总结:

     1.不允许调用release,retain,retainCount

     2.不允许重写dealloc,不允许调用 [super dealloc];

     3.@property的参数:

      strong :相当于原来的retain (适用于 OC对象类型),成员变量是强指针

      weak : 相当于原来啊的assign ,(适用于 OC对象类型), 成员变量是弱指针

      assign : 适用于非OC对象类型 即基础类型 int float 等

     ARC是iOS5推出的新功能,全称叫ARC(Automatic Reference Counting)。简单地说,

    就是代码中自动加入了retain/release,原先需要手动添加的用来处理呢村管理的引用计数的代码

    可以自动地由编译器完成了。

    有一点,ARC并不是GC,它只是一种代码静态(Static Analyzer)工具。

    //////////////////////////

    /////////////////////////

    ARC 的本质

     ARC 是编译器(时)特性,而不是运行时特性,更不是垃圾回收器(GC)。

    1.栈区(stack)-由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。是个线程独有的,保存其运行状态和局部自动变量的。栈在线程开始的时候初始化,每个线程的栈相互独立,因此,栈是thread safe的。每个C++对象的数据成员也存在在栈中,每个函数都有自己的栈,栈被用来在函数之间传递参数。操作系统在切换线程的时候会自动切换栈,就是切换SS/ESP寄存器。占空间不需要在高级语言里面显式分配和释放。

    2.堆区(heap)-一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。是大家共有的空间,分全局堆和局部堆。全局堆就是所有没有分配的空间,局部堆就是用户分配的空间。堆在操作系统对进程初始化的时候分配,运行过程中也可以想系统要额外的堆空间,但是记得用完了要还给系统,要不然就是内存泄漏。堆里面一般放得时静态数据,如 Static 的数据和字符串常量什么的,资源加载后一般也放在堆里面。一个进程的所有线程共有这些堆,所以对堆得操作要考虑同步和互斥的问题。程序里面编译后的数据段都是堆得一部分。

    3.全局区(静态区、Static)-全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在相邻的另一块区域。-程序结束后有系统释放

    4.文字常量区-常量字符串就是放在这里的。程序结束后由系统释放

    5.程序代码区- 存放函数体的二进制代码

     
  • 相关阅读:
    java数据库连接池
    TCP长连接服务的Java实现
    一种简单JDBC数据库连接池的实现
    ProFtpd快速指南
    vsftpd安装
    IIS启动失败【发生意外错误 0x8ffe2740】解决办法
    eclipse+myeclipse+tomcat配置web开发
    数据库连接池技术浅析
    论JSP数据库连接池的必要性
    ProFTPD使用
  • 原文地址:https://www.cnblogs.com/crybee/p/4934376.html
Copyright © 2011-2022 走看看