iOS copy&mutableCopy理解】的更多相关文章

Copy&mutableCopy   通过copy方法可以创建可变或不可变对象的不可变副本,通过mutableCopy可以创建可变或不可变对象的可变副本. 拷贝分为浅拷贝和深拷贝: 浅拷贝:指针拷贝,对一个对象进行浅拷贝,相当于对指向该对象的指针进行复制,产生一个新的指向这个对象的指针.当一个对象销毁后,两个指针都应该置空. 深拷贝:内容拷贝,增加一个指针并且申请一个新的内存,使这个新增的指针指向这个新的内存.使用深拷贝不会出现浅拷贝时重复释放同一块内存的错误!   Not to say, sh…
iOS开发SDWebImageOptions理解 原文 http://www.cnblogs.com/WJJ-Dream/p/5816750.html typedef NS_OPTIONS(NSUInteger, SDWebImageOptions) { SDWebImageRetryFailed = 1 << 0, SDWebImageLowPriority = 1 << 1, SDWebImageCacheMemoryOnly = 1 << 2, SDWebImag…
(参考 iOS 52个技巧学习心得笔记 第二章 对象 , 消息, 运行期)的对象部分 关于Copy  有个经典问题”大部分的时候NSString的属性都是copy,那copy与strong的情况下到底有什么区别呢” 或者说”为什么 NSString 类型成员变量的修饰属性用 copy 而不是 strong (或 retain ) ?” 明显 第一句比第二句 严谨多了. @property (strong,nonatomic) NSString *strongString; & @property…
概述 对于系统的非容器类对象,对一不可变对象复制,copy是指针复制(浅拷贝)和mutableCopy就是对象复制(深拷贝).如果是对可变对象复制,都是深拷贝,但是copy返回的对象是不可变的. 对于系统的容器类对象,以上规则同样适用,但是容器内的元素全部都是浅拷贝,也就是说所有的元素拷贝的仅仅是指针,内存没被复制. copy与retain的区别 copy是创建一个新对象,retain是创建一个指针,引用对象计数加1.Copy属性表示两个对象内容相同,新的对象retain为1 ,与旧有对象的引用…
copy 和 mutableCopy 你真的理解吗?最近发现很多面试者基本都不能很好地回答这个问题.所以整理一下. copy和mutableCopy的概念: copy 浅拷贝,不拷贝对象本身,仅仅是拷贝指向对象的指针. NSString *str1 = @"str1"; NSString *str2 = [str1 copy]; NSLog(@"\nstr1 = %@ str1P = %p \n str2 = %@ str2P = %p", str1, str1,…
依旧本着尊重原创和劳动者的原则,将地址先贴在前面: http://www.cnblogs.com/nonato/archive/2013/11/28/3447162.html,作者Nonato 以下内容为转载: IOS的对象都继承于NSObject, 该对象有一个方法:retainCount ,内存引用计数. 引用计数在很多技术都用到: window下的COM组件,多线程的信号量,读写锁,思想都一样. (一般情况下: 后面会讨论例外情况)alloc 对象分配后引用计数为1retain 对象的引用…
Objective - C 中有很多在日常项目中经常用到的常用代码,在这里着重的讲一下关于copy 和 mutableCopy 的区别以及相关用法. Objective - C 中可变对象和不可对象经常用的如下: NSString. NSMutableString | NSArray.NSMutableArray, 分开说: A:NSString. NSMutableString 二者的copy方法返回类型为: [NSString copy]                         浅拷…
1.使用copy或mutableCopy方法可以创建一个对象的副本. copy: (1)需要实现NSCoppying协议 (2)创建的是不可变副本(如NSString.NSArray.NSDictionary) mutableCopy: (1)需要先实现NSMutableCopying协议 (2)创建的是可变副本(如NSMutableString.NSMutableArray.NSMutableDictionary) [备注]Copy的目的是建立副本,同时修改原始对象和复本不会互相干扰 2.深复…
由于原文创作时间较早,一些内容不实用了,我对其进行了加工,去掉了一部分内容,添加了一点注释. 原文连接 http://www.cnblogs.com/ydhliphonedev/archive/2012/04/27/2473927.html 当然在ios中并不是所有的对象都支持copy,mutableCopy,遵守NSCopying 协议的类可以发送copy消息,遵守NSMutableCopying 协议的类才可以发送mutableCopy消息.如果想自定义一下copy 那么就必须遵守NSCop…
写在前面 其实看了这么多,总结一个结论: 拷贝的初衷的目的就是为了:修改原来的对象不能影响到拷贝出来得对象 && 修改拷贝出来的对象也不能影响到原来的对象 所以,如果原来对象就是immutable的,然后用使用copy,生成的对象也还是immutable的,原来和现在的对象都是不可变的,所以就没有必要单独在内存中开辟存储空间,既生成新的对象了.所以这样生成的叫浅拷贝(shallow copy). -----------------------------------------------…