• OC-copy


    一,堆与栈

     
    1,栈区,stack: 后进先出,由编译器自动分配并释放,一般存放函数的参数值、局部变量

    2,堆区,heap:先进先出,由程序员分配和释放

    3,全局区,静态区:程序结束后由系统释放,

    4,寄存区:保存栈顶指针和指令指针

    5,文字常量区

    6,程序代码区,存放函数的二进制代码

    链表:头指针head,

    栈区:main中有i和j变量    i 地址比 j 地址 大

    栈区大小为1M

    堆:(系统内存和虚拟内存)

      1,所有应用程序共享

      2,所有堆中的内存分配,都是操作系统负责的

      3,操作系统使用链表来维护所有已经分配的内存

      4,堆中的内存释放,程序通知系统释放内存。引用计数为0,会被立即释放

      5,堆中的所有空间,都是“匿名”访问的,所有匿名访问都是通过指针来访问

    在OC中没有垃圾回收机制

    NULL表示地址为0

    nil 是地址指向NULL的空对象

    nil可以调用任何方法不会报错

    copy:建立一个副本,互不干扰

    可变不可变 是 针对 Foundation 框架的数据类型

    对于自定义类 copy就是可变

    arrayM  M就是可变的意思

    可变copy为可变或不可变 地址都会变

    不可变copy为不可变(浅复制) 地址不变

    NSMutableArray *arrayM = [NSMutableArray arrayWithObjects:@(1), @(2), nil];
    NSLog(@"%@ %p %@", arrayM, arrayM, arrayM.class);
    
    //1,可变 =》 可变
    NSMutableArray *aM = [arrayM mutableCopy];
    NSLog(@"%@ %p %@", aM, aM, aM.class);
    //2,可变 =》 不可变
    NSArray *a = [arrayM copy];
    NSLog(@"%@ %p %@", a, a, ,a.class);
  • 相关阅读:
    安装go版本
    golang简介
    安装MySQL
    art.dialog.art 中,将子页面窗口中的值传递给父框架中
    Windows7下安装CentOS
    生成uuid
    如何开启win7端口的图文教程
    PHPMailer不能发送邮件
    sql 如果关联表 没有值 设置 默认值
    php array 分页
  • 原文地址:https://www.cnblogs.com/IDRI/p/5009507.html
Copyright © 2020-2023  润新知