zoukankan      html  css  js  c++  java
  • iOS基础

    copymutableCopy

    一个对象使用copymutableCopy方法可以创建对象的副本

    copy – 需要先实现NSCoppying协议,创建的是不可变副本(NSStringNSArrayNSDictionary)

    mutableCopy – 需要先实现NSMutableCopying协议,创建的是可变副本(NSMutableStringNSMutableArrayNSMutableDictionary)

    深复制:内容拷贝,源对象和副本指向的是不同的两个对象。源对象引用计数器不变,副本计数器设置为1

    浅复制:指针拷贝,源对象和副本指向的是同一个对象。对象的引用计数器+1,其实相当于做了一次retain操作

    只有不可变对象创建不可变副本(copy)才是浅复制,其他都是深复制

     

    为自定义类添加复制功能

    如果想自定义copy,那么就必须遵守NSCopying,并且实现 copyWithZone:方法

    如果想自定义mutableCopy,那么就必须遵守NSMutableCopying,并且实现 mutableCopyWithZone: 方法

    copy为例,建议用[self class]代替直接类名

    - (id)copyWithZone:(NSZone *)zone {

        id copy = [[[self class] allocWithZone:zone] init];

        // 做一些属性的初始化.....

        return copy;

    }

     

     

  • 相关阅读:
    Ubuntu上使用Latex
    Ubuntu18.04 解压文件名乱码的解决方法
    Android 编译 opencv
    android 使用编译好的sdk
    https协议加密原理介绍(一)
    java 面试题目 class.forName和load的区别
    给进程设置环境变量
    Maven 编译jdk配置
    Docker积累
    潜谈单例模式
  • 原文地址:https://www.cnblogs.com/monicaios/p/3514548.html
Copyright © 2011-2022 走看看