JavaShuo
栏目
标签
《Objective-c》Foundation框架 -(copy/mutableCopy)
时间 2019-11-13
标签
Objective-c
foundation
框架
copy
mutablecopy
栏目
iOS
繁體版
原文
原文链接
1.copy(不可变副本)/mutableCopy(可变副本):
copy语法的目的:改变
副本
的时候,不会影响到源对象;
一个对象能够使用
copy
/
mutableCopy
方法
建立副本
;
copy
须要先实现NSCopying协议,建立的是
不可变副本
;
mutableCopy
须要先实现
NSMutableCopying协议
,建立的时
不可变副本
;
深拷贝:
内容(对象)的拷贝
,源对象和副本指向的是不一样的对象。
源对象
的引用计数器
不变
,
新对象
的引用计数器设
置为1
;
浅拷贝:
指针的拷贝
,源对象和副本指向的时同一个对象。
对象
的引用计数器
+1
;至关于作了一次
retain
操做;
只有不可变对象建立不可变副本(copy)才是前拷贝,其余的都是深拷贝;
NSString
/
NSMutableString
、
NSDictionary
/
NSMutableDictionary
、
NSArray
/
NSMutableArray
等都已经实现了
NSCopying协议
和
NSMutableCopying协议
,因此在使用
copy
或者
mutableCopy
建立副本是不用再实现
NSCopying协议
或者
NSMutableCopying协议
2.浅拷贝(指针拷贝):
浅拷贝:
指针拷贝
,不会产生新对象。源对象的计数器+1,至关于作了一次
retain操做;
只有一种状况是
浅拷贝
,不可变对象调用对象方法时;
浅拷贝为
指针的拷贝
:
3.深拷贝(内容拷贝):
深拷贝:
内容(对象)拷贝
,会产生
新对象
。新对象的计数器置1,源对象的计数器不变;
深拷贝一:NSString NSMutableCopy
深拷贝二:NSMutableString copy
深拷贝三:NSMutableString NSMutableCopy
3.自定义类以及子类的拷贝:
自定义的类若是想使用
copy
或者
mutableCopy
必需要先实现
NSCopying协议
或者
NSMutableCopying协议
!否则会报错“
[Student copyWithZone:]: unrecognized selector sent to instance 0x1030051a0
”
NSCopying协议
或者
NSMutableCopying协议
中都
各有一个方法
:因此咱们应该从新实现其方法!
- (id)copyWithZone:(NSZone *)zone
方法的重写:
因为子类中还有其余的属性(age),因此还要将age属性拷贝给副本,因此还要在子类中重写
- (id)copyWithZone:(NSZone *)zone
方法
使用静态方法快速建立对象时的注意点:
相关文章
1.
Foundation框架-NSTimeZone
2.
Foundation框架-NSCalendar
3.
Foundation框架
4.
Foundation框架—集合
5.
OC的Foundation框架
6.
Foundation框架介绍
7.
Foundation框架解析
8.
iOS - OC Foundation 框架
9.
OC中Foundation框架
10.
IOS之Core Foundation框架和Cocoa Foundation框架的区别
更多相关文章...
•
Docker 架构
-
Docker教程
•
SSH框架(Struts2+Spring+Hibernate)搭建整合详细步骤
-
Spring教程
•
适用于PHP初学者的学习线路和建议
•
Tomcat学习笔记(史上最全tomcat学习笔记)
相关标签/搜索
foundation
objectivec
框架
objectivec&swift
集合框架
web框架
ORM框架
CXF框架
WEB框架:Django
DRF框架
C&C++
iOS
Hibernate教程
Spring教程
MyBatis教程
架构
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
gitlab新建分支后,android studio拿不到
2.
Android Wi-Fi 连接/断开时间
3.
今日头条面试题+答案,花点时间看看!
4.
小程序时间组件的开发
5.
小程序学习系列一
6.
[微信小程序] 微信小程序学习(一)——起步
7.
硬件
8.
C3盒模型以及他出现的必要性和圆角边框/前端三
9.
DELL戴尔笔记本关闭触摸板触控板WIN10
10.
Java的long和double类型的赋值操作为什么不是原子性的?
本站公众号
欢迎关注本站公众号,获取更多信息
相关文章
1.
Foundation框架-NSTimeZone
2.
Foundation框架-NSCalendar
3.
Foundation框架
4.
Foundation框架—集合
5.
OC的Foundation框架
6.
Foundation框架介绍
7.
Foundation框架解析
8.
iOS - OC Foundation 框架
9.
OC中Foundation框架
10.
IOS之Core Foundation框架和Cocoa Foundation框架的区别
>>更多相关文章<<