Copy和MutableCopy】的更多相关文章

面试过程中经常被问到ARC中Strong.Copy的区别是什么.普通的回答是:一样.文艺(正确)的回答是:分情况(我擦!WQY#$&Y**%OWEUR) 可以先参考这篇文章http://www.cnblogs.com/lihaiyin/p/4647426.html 问题一:到底用Copy还是Strong 1. 把不可变对象写成Copy:   如果把不可变对象赋值给此属性,内存中其实就是retain了一下. 如果把可变对象赋值给此属性,会生成新的不可变对象,避免值的变化 2. 把不可变对象写成St…
Objective - C 中有很多在日常项目中经常用到的常用代码,在这里着重的讲一下关于copy 和 mutableCopy 的区别以及相关用法. Objective - C 中可变对象和不可对象经常用的如下: NSString. NSMutableString | NSArray.NSMutableArray, 分开说: A:NSString. NSMutableString 二者的copy方法返回类型为: [NSString copy]                         浅拷…
集合(NSArray,NSSet,NSDictionary等)使用copy与mutableCopy的区别是类似的,下面以NSMutableArray.NSArray 为例子验证如下: NSMutableArray *arrayM=[NSMutableArray arrayWithObjects:@"hello",@"word", nil]; id objM=[arrayM mutableCopy]; id obj=[arrayM copy]; NSLog(@&quo…
NSString: //main.m #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str1 = @"aaa"; NSString *str2 ; NSString *str3 ; NSString *str4 ; NSString *str5 ; NSString *str6 ; str2 = [NSStrin…
NSArray: //main.m #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //这里为不可变数组赋值以可变字符串对象,稍后会作说明,此测试换成NSString也可. NSArray *array1 = [[NSArray alloc]initWithObjects: [NSMutableString stringWithString:@"…
概述 对于系统的非容器类对象,对一不可变对象复制,copy是指针复制(浅拷贝)和mutableCopy就是对象复制(深拷贝).如果是对可变对象复制,都是深拷贝,但是copy返回的对象是不可变的. 对于系统的容器类对象,以上规则同样适用,但是容器内的元素全部都是浅拷贝,也就是说所有的元素拷贝的仅仅是指针,内存没被复制. copy与retain的区别 copy是创建一个新对象,retain是创建一个指针,引用对象计数加1.Copy属性表示两个对象内容相同,新的对象retain为1 ,与旧有对象的引用…
阅读本文之前首先了解copy与retain的区别,如果有不正确的地方望大家多多指教: copy与retain的区别: copy是创建一个新对象,retain是创建一个指针,引用对象计数加1.Copy属性表示两个对象内容相同,新的对象retain为1 ,与旧有对象的引用计数无关,旧有对象没有变化.copy减少对象对上下文的依赖. retain属性表示两个对象地址相同(建立一个指针,指针拷贝),内容当然相同,这个对象的retain值+1也就是说,retain 是指针拷贝,copy 是内容拷贝. 当然…
对象拷贝主要由两种方式:copy和mutableCopy.浅拷贝是指直接将指针指向原有的地址,从而达到复制的目的.深拷贝是指重新生成一个对象,将原有对象的内容复制到新的对象中.copy 返回的是一个不可变的对象,mutableCpoy返回的是一个可变的对象,但是由于OC的弱语法特性,即使如下使用编译器也不会报错.但是再运行时,arrayCopy会找不到具体的方法,报错. NSMutableArray *arrayCopy=[muArray copy]; copy当所引用的对象是可变的时,则是深拷…
最近对深浅拷贝(复制)做了一些研究,在此将自己的理解写下来,希望对大家有所帮助.本人尚处在摸索阶段,希望各位予以指正. 本文包括如下方向的探索: 1.指针与对象: 2.深/浅拷贝(复制): 3.可变/不可变对象: 4.Objective-C中的copy与mutableCopy方法. 一.指针与对象 在初始学习编程的时候,对于绝大多数面向对象编程的语言,这都是个绕不开的重点与难点.非常惭愧的是对它的认识我一直是不够的,并且感觉这项技术有许多的内容可以挖掘.说这是面向对象编程的核心思想也不为过.很多…
所有系统容器类的copy或mutableCopy方法,都是浅拷贝!!! (ps:什么是容器?比如NSArray,NSMutableArray,NSDictionary,NSMutableDictionary) 很多人一直认为,copy 是浅拷贝,mutableCopy 是深拷贝.我以前也是这么认为的.甚至很多网上的教学视频,很多书籍,很多博客,都是这么说的.但是,这大错特错! 为了防止有人不信,我们先拿出决定性的证据,然后再说其他的. There are two kinds of object…