zoukankan      html  css  js  c++  java
  • Copy 和 mutableCopy

    copy是什么?
    • Copy的字面意思是:“复制”、“拷贝”,是一个产生副本的过程。

    copy的目的:
    • 在改变原有对象的时候,不会改变新对象的值
    • 常见的复制有:文件复制,作用是利用一个源文件产生一个副本文件。

    copy的特点:
    • 修改源文件的内容,不会影响副本文件;
    • 修改副本文件的内容,不会影响源文件。

    OC中copy的作用是:
    • 利用一个源对象产生一个副本对象

    OC中copy的特点:
    • 修改源对象的属性和行为,不会影响副本对象;
    • 修改副本对象的属性和行为,不会影响源对象。

    如何使用copy功能?
    • 一个对象可以调用copy或mutableCopy方法来创建一个副本对象。
      • copy:创建的时不可变副本(如NSString、NSArray、NSDictionary)。
      • mutableCopy:创建的可变副本(如NSMutableString、NSMutableArray、NSMutableDictionary)。

    使用copy功能的前提:
    • copy:
      需要遵守NSCopying协议,实现copyWithZone:方法.
      @protocol NSCopying
      - (id)copyWithZone:(NSZone *)zone;
      @end
    • mutableCopy:
      需要遵守NSMutableCopying协议,实现mutableCopyWithZone:方法
      @protocol NSMutableCopying
      - (id)mutableCopyWithZone:(NSZone *)zone; 
      @end

    深复制和浅复制的区别:
    • 深复制(深拷贝/内容拷贝):
      • 本质:产生了新对象。
      • 特点:
        1、源对象和副本对象是不同的两个对象; 
        2、源对象引用计数器不变,副本对象计数器为1(因为是新产生的)。

    • 浅复制(浅拷贝/指针拷贝):
      • 本质:没有产生新对象。
      • 特点:
          1、源对象和副本对象是同一对象; 
          2、源对象(副本对象)引用计数器+1,相当于做一次retain操作。

  • 相关阅读:
    Unity Shader 之 uv动画
    c++源文件后缀名问题
    Unity Shader 之 透明效果
    正则表达式
    Unity Shader基础
    Unity Shader 之 渲染流水线
    2017/11/22 Leetcode 日记
    2017/11/21 Leetcode 日记
    2017/11/13 Leetcode 日记
    2017/11/20 Leetcode 日记
  • 原文地址:https://www.cnblogs.com/NSong/p/6407074.html
Copyright © 2011-2022 走看看