OC中的copy

原创 2015年07月10日 13:42:02
•OC中的copy
作用:利用一个源对象产生一个副本对象
特点:
修改源对象的属性和行为,不会影响副本对象

修改副本对象的属性和行为,不会影响源对象


•如何使用copy功能
Ø一个对象可以调用copy或mutableCopy方法来创建一个副本对象
ucopy : 创建的是不可变副本(如NSStringNSArrayNSDictionary)
umutableCopy:创建的是可变副本(如NSMutableStringNSMutableArrayNSMutableDictionary)
•使用copy功能的前提
Øcopy: 需要遵守NSCopying协议,实现copyWithZone:方法

@protocol NSCopying

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

@end

ØmutableCopy: 需要遵守NSMutableCopying协议,实现mutableCopyWithZone:方法

@protocol NSMutableCopying

-(id)mutableCopyWithZone:(NSZone *)zone;

@end 


•深复制(深拷贝,内容拷贝,deep copy)
Ø源对象和副本对象是不同的两个对象
Ø源对象引用计数器不变,副本对象计数器为1(因为是新产生的)
Ø本质是:产生了新的对象
Ø
•浅复制(浅拷贝,指针拷贝,shallow copy)
Ø源对象和副本对象是同一个对象
Ø源对象(副本对象)引用计数器+ 1,相当于做一次retain操作
本质是:没有产生新的对象


NSArray

NSMutableArray

copy

NSArray

mutableCopy

NSMutableArray


NSDictionary

NSMutableDictionary

copy

NSDictionary

mutableCopy

NSMutableDictionary

NSString

NSMutableString

copy

NSString

mutableCopy

NSMutableString


只有源对象和副本对象都不可变时,才是浅复制,其它都是深复制

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

详谈OC(object-c)深浅复制/拷贝-什么情况下用retain和copy

浅 复 制:在复制操作时,对于被复制的对象的每一层复制都是指针复制。   深 复 制:在复制操作时,对于被复制的对象至少有一层复制是对象复制。   完全复制:在复制操作时,对于被复制的对象的每一层复制...

OC中内存管理 assign, retain, copy 的 setter 和 getter 方法

最近关于 setter 和 getter 方法突然有些晕, 所以重新做了整理 内存管理 assign, retain, copy 的 setter 和 getter 方法assign的 setter ...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

黑马程序员——OC中的copy

一、基本概念copy分为copy和mutableCopy,即复制和可变复制基本复制浅复制,实际上只是复制了地址,新对象和旧对象的引用计数都会加一。代码举例:NSString *str = @"abc"...

OC中的copy的实现原理与深浅拷贝

首先,从copy开始说,简而言之,copy的目的就是生成一个新的实例,然后把其成员都按原实例赋值。对于非指针型的成员,比如BOOL, int, float,这样的赋值可以直接进行。但是对于指针型的数据...

【OC语言】第十篇·NSFileManager、NSDate、沙盒、copy以及单例模式

一、NSFileManger     1. NSFileManager的目录属性用法: NSString *filePath = @"/Users/Mac-leaf/Desktop/ar...

OC-property-synthesize-nonatomic-atomic-assign-retain-copy

之前很多网友对我翻译的教程中的Property的使用感到有些迷惑不解,搞不清楚什么时候要release,什么时候要self.xxx = nil;同时对于Objective-c的内存管理以及cocos2...

oc中的copy与mutableCopy

oc中的copy与mutableCopy oc中有两种对象,一种是可变对象,一种是不可变对象;还有两种对象拷贝方式:copy和mutableCopy 可变对象可以修改,不可...

OC基础:内存(进阶):retain.copy.assign的实现原理

retain copy assign的内部实现原理

黑马程序员---oc copy

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

OC nonatimic,retain,assign,copy,readonly,readwrite

nonatimic,retain,assign,copy,readonly,readwrite,这些属性主要事完成getter setter 的操作 . 1,assign: 简单的赋值  不会更...
  • GUITK
  • GUITK
  • 2012-07-04 14:39
  • 4747
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)