美文网首页
了解copy

了解copy

作者: 只写Bug程序猿 | 来源:发表于2017-09-11 10:53 被阅读0次

首先问一个问题,为什么NSString要用copy修饰,用strong修饰不行么?

先模拟一个错误的场景,一个person类,有一个用strong修饰的属性叫 s_name,并且之前的复制变量还想重复使用到其他场景,我们创建一个ViewController的对象VC并持有person类对象person;并执行下边test1方法.

-(void)test1{

self.person = [[Person alloc]init];

NSMutableString *name = [NSMutableString stringWithFormat:@"IOS"];

self.person.s_name = name;

NSLog(@"%@",self.person.s_name);

[name appendingString:@" Swift"];

NSlog(@"%@",self.person.s_name);

}

  输出结果:

'2016-08-1205:51:21.262TestCopy[64714:20449045]iOS

2016-08-1205:51:21.262TestCopy[64714:20449045]iOS Swift'

发现我们仅仅对name做了修改,为什么s_name也会改变,好下边我们对代码稍作修改

-(void)test2{

self.person = [[Person alloc]init];

NSMutableString *name = [NSMutableString stringWithFormat:@"IOS"];

self.person.s_name = name;

NSLog(@"%@",self.person.s_name);

name = @"IOS Swift";

NSlog(@"%@",self.person.s_name);

}

输出结果:

2016-08-1205:56:57.162TestCopy[64842:20459179]iOS

2016-08-1205:56:57.162TestCopy[64842:20459179]iOS

在做一个实验,我么用一个copy修饰的c_name 代替s_name

-(void)test3{

self.one=[[Personalloc]init];

NSMutableString*name=[NSMutableStringstringWithFormat:@"iOS"];

self.one.c_name=name;

NSLog(@"%@",self.one.c_name);

[nameappendString:@" Source Probe"];

NSLog(@"%@",self.one.c_name);

}

输出结果:

2016-08-12 06:03:40.226 TestCopy[64922:20479646] iOS

2016-08-12 06:03:40.227 TestCopy[64922:20479646] iOS

现在知道为什么要用copy了吧,也就是在一个特定场景下:我们通过一个NSMutableString对String变量进行复制,如果string的property为strong修饰时,就会随着NSMutableString类型的变量一起变化!!

相关文章

  • 了解copy

    首先问一个问题,为什么NSString要用copy修饰,用strong修饰不行么? 先模拟一个错误的场景,一个pe...

  • fork 之写时复制(COW)

    参考 COW奶牛!Copy On Write机制了解一下C++ STL STRING的COPY-ON-WRITE技...

  • iOS:重新认识Copy

    在说Copy之前,我们需要了解copy的目的的是什么? Copy目的其实就是产生一个副本对象,副本对象跟源对象互相...

  • ios开发详细解析copy和mutableCopy

    在日常开发中,很多时候都会用到copy和mutableCopy,但是大家是否真正了解copy过程中内存发生了什么?...

  • 8.2-浅拷贝深拷贝和随机数

    清醒、自律、知进退、爱自己! 2.浅Copy与深Copy 引用、浅拷贝和深拷贝的区别 浅拷贝:影子拷贝;为了解决函...

  • iOS对象数组的深copy

    最近有个需求需要copy数组对象才发现之前一直不太了解深浅copy就随手写了个小demo研究下。 1,NSObje...

  • IOS开发之深拷贝与浅拷贝(mutableCopy与Copy)详

    阅读本文之前首先了解copy与retain的区别,如果有不正确的地方望大家多多指教: copy与retain的区别...

  • Copy Copy Copy

    说到Copy 大多会想到浅复制(指针复制),深复制(内容复制)。看一张图: 你会发现对于集合类型,深复制那写的是...

  • Objective-C里的对象Copy

    一.什么叫对象Copy 可能大多开发者对于数组,字典,字符串的copy都有了解,对于浅拷贝和深拷贝更是耳熟能详...

  • 2018-09-27

    copy的问题 copy.copy返回浅copy copy.deepcopy返回深copy 1fromcopyim...

网友评论

      本文标题:了解copy

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