zoukankan      html  css  js  c++  java
  • weak和拷贝

    weak/拷贝

    1. weak

    • 只要没有strong指针指向对象,该对象就会被销毁

    2. 拷贝

    • NSString和block用copy

    • copy语法的作用

      • 产生一个副本
      • 修改了副本(源对象)并不会影响源对象(副本)
    • 实现拷贝的方法
      • copy: 返回的是不可变副本
        • 可变字符串调用copy生成不可变的副本
        • 副本与源对象(不可变的)的地址相同
        • 自定义对象用copy即可(副本与源对象的地址不同),如果用strong则副本与源对象地址一样
        • copy内部会调用copyWithZone方法
        • 遵守NSCopying即可拥有copyWithZone方法
        • 在set方法中调用copy
    重写copyWithZone:(NSZone *)zone方法
    {
       类名 *对象名称 = [[类名 allocWithZone] init];
       /*给属性赋值*/
       return 对象名称;
    }
    - (void)set属性:(类名 *)参数名称
    {
        _属性 = 参数;
    }
    + mutablecopy: 返回可变副本
        * 副本与源对象地址不同

    3. 浅拷贝和深拷贝

    源对象类型调用的拷贝方法副本对象类型是否产生了新对象拷贝类型
    NSMutableString copy NSString YES 深拷贝(内容拷贝)
    NSMutableString mutablecopy NSMutableString YES 深拷贝(内容拷贝)
             
    NSString copy NSString NO 浅拷贝(指针拷贝)
    NSString mutablecopy NSMutableString YES 深拷贝(内容拷贝)
    • 普通对象实现拷贝的步骤 _ 遵守NSCopying协议
      • 实现-copyWithZone:方法
        • 创建新对象
        • 给新对象的属性赋值
  • 相关阅读:
    2019 SDN上机第5次作业
    iOS 多线程
    安装pygame
    五分钟学会ios反编译
    反编译ipa包
    Flutter 混合开发(一)
    iOS开发-block异步实现return
    Mac下Anaconda的安装和使用
    挣值分析
    【PMP】挣值分析
  • 原文地址:https://www.cnblogs.com/HMJ-29/p/4758671.html
Copyright © 2011-2022 走看看