weak和拷贝
weak/拷贝
1. weak
- 只要没有strong指针指向对象,该对象就会被销毁
2. 拷贝
NSString和block用copy
copy语法的作用
- 产生一个副本
- 修改了副本(源对象)并不会影响源对象(副本)
- 实现拷贝的方法
- copy: 返回的是不可变副本
- 可变字符串调用copy生成不可变的副本
- 副本与源对象(不可变的)的地址相同
- 自定义对象用copy即可(副本与源对象的地址不同),如果用strong则副本与源对象地址一样
- copy内部会调用copyWithZone方法
- 遵守NSCopying即可拥有copyWithZone方法
- 在set方法中调用copy
- 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:方法
- 创建新对象
- 给新对象的属性赋值
- 实现-copyWithZone:方法
weak和拷贝的更多相关文章
- 【iOS atomic、nonatomic、assign、copy、retain、weak、strong】的定义和区别详解
一.atomic与nonatomic 1.相同点 都是为对象添加get和set方法 2.不同点 atomic为get方法加了一把安全锁(及原子锁),使得方法get线程安全,执行效率慢 nonatomi ...
- strong,weak, retain, assign的区别
strong,weak, retain, assign的区别 strong与weak是由ARC新引入的对象变量属性 xcode 4.2(ios sdk4.3和以下版本)和之前的版本使用的是retain ...
- [转]iOS开发中@property的属性weak nonatomic strong readonly等介绍
转载地址: http://www.lvtao.net/ios/504.html @property与@synthesize是成对出现的,可以自动生成某个类成员变量的存取方法.在Xcode4.5以及以后 ...
- IOS开发 strong,weak,retain,assign,copy nomatic 等的区别与作用
strong,weak,retain,assign,copy nomatic 等的区别 copy与retain:1.copy其实是建立了一个相同的对象,而retain不是:2.copy是内容拷贝,re ...
- assign,copy,strong,weak,nonatomic的理解
举个例子: NSString *houseOfMM = [[NSString alloc] initWithString:'MM的三室两厅']; 上面一段代码会执行以下两个动作: 1 在堆上分配一段 ...
- iOS中assign,copy,retain之间的区别以及weak和strong的区别(面试)
• copy: 用于希望保持一份传入值的拷贝,而不是值自身的情况,即把原来的对象完整的赋值到另外一地方,重新加载一内存区,一个地方变了不影响另一个地方的对象. • assign: 简单的直接赋值,相 ...
- iOS - property,strong,weak,retain,assign,copy,nomatic 的区别及使用
1:ARC环境下,strong代替retain.weak代替assign,xcode 4.2(ios sdk4.3和以下版本)和之前的版本使用的是retain和assign,是不支持ARC的.xcod ...
- property attribute: assign, strong, weak, unsafe_unretain and copy
assign:用于“纯量类型”(如CGFloat 或 NSInteger等): strong:用于“对象类型”,定义了一种“拥有关系”(owning relationship),为这种属性设置新值时, ...
- iOS - OC Copy 拷贝
前言 copy:需要先实现 NSCopying 协议,创建的是不可变副本. mutableCopy:需要实现 NSMutableCopying 协议,创建的是可变副本. 浅拷贝:指针拷贝,源对象和副本 ...
随机推荐
- 【接口】SpringBoot+接口开发(一)
一.接口的简单介绍 1.什么是接口:接口及服务: 2.接口的分类:(1)系统的内部接口;(2)第三方的外部接口; 3.简述接口原理图: 4.接口协议:是指客户端跟服务器之间或者接口与接口间进行的通讯时 ...
- 【Docker】Asp.net core在docker容器中的端口问题
还记得[One by one系列]一步步学习docker(三)--实战部署dotnetcore中遇到的问题么?容器内部启动始终是80端口,并不由命令左右. docker run --name cont ...
- 第一课 Dubbo背景及原理
1 . 技术背景 Dubbo每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点. Dubbo是一个阿里巴巴开源出来的一个分布式服务框架,致力于 ...
- 【死磕 NIO】— 深入分析Buffer
大家好,我是大明哥,今天我们来看看 Buffer. 上面几篇文章详细介绍了 IO 相关的一些基本概念,如阻塞.非阻塞.同步.异步的区别,Reactor 模式.Proactor 模式.以下是这几篇文章的 ...
- 2014年3月5日C#训练
using System; class Program { static void Main() { Console.WriteLine("请输入两个整数:"); int a = ...
- Spring Boot + MyBatis 多模块项目搭建教程
一.前言 1.开发工具及系统环境 IDE:IntelliJ IDEA 2020.2.2 系统环境:Windows 2.项目目录结构 biz层:业务逻辑层 dao层:数据持久层 web层:请求处理层 二 ...
- [atARC094F]Normalization
考虑$s$能变成$t$的必要条件(假设$s\ne t$): 1.$s$中存在一对相邻字符不同 2.$|s|=|t|$且若将a-c对应为0-2,则字符模3同余: 3.$t$中存在一对相邻两个字符相同 同 ...
- 八、hive3.1.2 安装及其配置(本地模式和远程模式)
目录 前文 hive3.1.2 安装及其配置(本地模式和远程模式) 1.下载hive包 2.修改其环境变量 3.MySQL配置 Centos7 MySQL安装步骤: 1.设置MySQL源 2.安装My ...
- vue-ref指令
$refs是数组
- html图片动态增加文字
<body> <!-- <div class="logo"> <img src="${imagePath}/disc.PNG" ...