一、属性的修饰符
1.我们一块儿复习一下,我们以前学过的,属性的修饰符,
什么是属性的修饰符:
1)strong
2)weak
3)copy
4)assign

我们定义一个copy属性,@property(nonatomic,copy)NSString *name;
// 属性修饰符
// strong
// weak
// assign
// copy

2.字符串为什么要用copy,
self.name =
我给它赋一个值,当然这个值是计算出来的,怎么计算出来的,我拼接字符串计算出来的,拼接字符串,我要用什么,NSMutableString ,
NSMutableString *str = [NSMutableString string];

NSMutableString *str = [NSMutableString string];
[str appendString:@“hello”];
self.name = str;
这么写,没问题吧,当这行代码self.name = str,执行完成之后,因为我程序是顺序往下执行的,我下面还要去拼接这个字符串,我再拼接一个字符串,
[str appendString:@“zs”];

我现在输出self.name,
NSLog(@“%@”,self.name);
我输出的是hello,还是hello zs,
运行一下,

输出的是hello,
那,我们希望的这个self.name,是不是就是hello,这是我们希望的值吧,因为这块儿写的就是copy吧,
这块儿为什么用copy,如果这块儿不用copy,应该用什么,strong吧,
NSString是不是一个类,这是一个对象,这是一个OC对象,所以如果不用copy的话,这块儿应该用,strong,
我们再来运行一下,如果这块儿是strong,输出的是hello、还是hellozs、

输出的是什么,hellozs,
为什么呢,当这个位置是copy的时候,输出的是hello、
当这个位置是strong的时候,输出的是hellozs、
当这个位置是copy和strong的时候,输出的结果是不一样的,为什么,
当是strong的时候,我们看一下代码是怎么去工作的,代码从上往下依次执行,

到这个位置,这个MutableString,有值了,有值之后,下面这行代码,这是关键,

把string,mutableString,是不是赋给了self.name,
它是什么,*str,带着星,说明是,地址,

所以,我们这个位置,在赋值的时候,如果我们这个name,是用strong修饰的,

这个name,是不是也带着一个星,这个name,是不是也是个地址,其实就是让self.name,这个地址,指向了str,
当str的值发生了变化,那我的self.name,是不是也发生了变化,
因为我的地址,是不是指向你了,
所以,当,MutableString的值,发生了变化,那我这个name的值,也发生了变化,这是我们不希望的,因为我们希望,这块儿,已经把这个人的名字,算好了,下面是算别的事情,我们不希望这样的事情发生,所以,这个string,应该改成,copy,
那,改成copy,又是什么意思呢,改成copy以后,执行这行代码的时候,
self.name = str;

改成copy之后,执行这行代码的时候,会对这个str,先做一次copy操作,先复制了一份儿,我们在对MutableString,进行copy操作的时候,就是把可变,变成了不可变,复制了一个不可变对象,所以,复制了一份儿,等于这个self.name,
那,将来,不管你这个MutableString怎么变,我这个name,都是不会变化的,因为复制了一份儿,
我们把这儿改成strong,我们把这儿,加一个copy,

我们运行,结果是什么,hello、还是hellozs、

运行,结果是hello,是不是就跟我们刚才分析的结果是一样的,
那这块儿改成copy,其实就是自动的帮我们做了一下这件事情,

这就是字符串为什么用copy,

字符串为什么用copy:当给这个属性赋值,mutableString的时候,如果用strong修饰的话,那它是一个地址的指向,然后,当mutableString的值发生了变化,我们name的值,指向的是,始终是最新的那个值,我们需要把这儿改成,copy,

这是字符串为什么要用copy,接下来再来看,谁还要用copy修饰,
2.block,为什么要用copy,

这个之前讲过没,我们先把前面的注释起来,再来看第二个,

看第二个的话,我们先要定义一个block,block怎么定义的,
先写返回值,void,block就是一个函数,
所以,定义block的时候,就想函数的那个三要素,
void ()()
返回值 - 函数的名称 - 参数
但是block比较特殊,要加一个^,


最低0.47元/天 解锁文章
315

被折叠的 条评论
为什么被折叠?



