美文网首页
iOS-copy strong 可变 不可变 深浅拷贝

iOS-copy strong 可变 不可变 深浅拷贝

作者: 我是谁重要吗 | 来源:发表于2018-07-04 23:43 被阅读14次

NSString内存分配情况

可变 不可变:

NSString 不可变是说它指向的不可变,重新赋值NSString 是重新指向了新的地址,之前指向的地址内容不发生改变。

NSMutableString *strM1 = [[NSMutableString alloc] initWithString:@"123"];
NSMutableString *strM2 = [[NSMutableString alloc] initWithString:@"123"];
NSLog(@"strM1地址:%p",strM1); //strM1地址:0x60000024f750
NSLog(@"strM2地址:%p",strM2); //strM2地址:0x60000024fbd0
NSLog(@"%d %d %d",strM1 == strM2,[strM1 isEqual:strM2],[strM1 isEqualToString:strM2]); //0 1 1
[strM1 appendString:@"456"];
NSLog(@"strM1地址:%p",strM1); //strM1地址:0x60000024f750

strM1 改变了值,但指向的地址没有改变 。因为strM1是可变的NSMutableString

深浅拷贝:

  • 浅拷贝:指针拷贝,不产生新对象
  • 深拷贝:内容拷贝,产生新对象

NSString中

  • 浅拷贝:未产生新对象
  • 深拷贝:产生新对象

NSSMutableString中

  • 浅拷贝:产生新对象
  • 深拷贝:产生新对象

以下原理相同
NSArray;
NSMutableArray;
NS;
NSMutable
;

copy 、mutableCopy

copy 、mutableCopy和深浅拷贝没有直接对应关系

copy,strong

copy,strong和深浅拷贝没有完全对应关系
简单来说,希望不跟着源头改变,就用copy,跟着改变就用strong

参考:
https://www.zybuluo.com/MicroCai/note/50592
NSString与NSMutableString的深浅拷贝
NSString什么时候用copy,什么时候用strong
https://www.jianshu.com/p/6419828ae238
https://www.jianshu.com/p/b7de4031838a

相关文章

  • iOS-copy strong 可变 不可变 深浅拷贝

    NSString内存分配情况 可变 不可变: NSString 不可变是说它指向的不可变,重新赋值NSString...

  • 浅拷贝与深拷贝

    /*浅拷贝:拷贝地址*/ /*深拷贝:拷贝对象*/ 用Strong修饰不可变数组:浅拷贝 用Copy修饰不可变数组...

  • iOS Note

    Note strong©&mutablecopy strong修饰的属性无论是可变或不可变都是浅拷贝 co...

  • Python基础005--深拷贝和浅拷贝

    深浅拷贝中首先要判断拷贝元素是不是可变元素可变元素:list dict set(无序) object不可变元素: ...

  • iOS深浅拷贝、可变不可变拷贝之探究

    浅拷贝:只创建一个新的指针,指向原指针指向的内存。深拷贝:创建一个新的指针,并开辟新的内存空间,内容拷贝自原指针指...

  • 深浅拷贝的异同

    深浅拷贝异同主要体现于可变对象上,对于tuple之类的不可变对面,深浅拷贝后,地址值和变量值都是一样的,但是对与l...

  • iOS 拷贝问题

    iOS 拷贝问题 之前在孙**同学面试过程中,发现一些自己对深浅拷贝、可变不可变拷贝的理解有问题,后来在网上也发现...

  • copy & mutableCopy

    不可变对象执行不可变拷贝( copy )就是浅拷贝; 如果执行拷贝时,只要有可变的无论是可变的对象还是可变拷贝( ...

  • 第三节 浅拷贝与深拷贝

    为了解决可变类型的麻烦,前辈们设计了深浅拷贝,现在来看看它们是怎么用的吧. 浅拷贝 拷贝的对象只含有不可变类型 拷...

  • iOS strong vs copy

    1.原对象不可变时,两种情况下都只是指针拷贝,计数+1。 2.原对象可变时,strong修饰的对象,是指针拷贝,引...

网友评论

      本文标题:iOS-copy strong 可变 不可变 深浅拷贝

      本文链接:https://www.haomeiwen.com/subject/mqoyuftx.html