美文网首页
iOS中copy和strong的区别

iOS中copy和strong的区别

作者: 西门淋雨 | 来源:发表于2018-10-24 23:12 被阅读176次
     NSString *string = @"123";
     self.cStr = string;
     self.sStr = string;
     NSLog(@"string==%p--%p",string,&(string));
     NSLog(@"cStr==%p--%p",_cStr,&(_cStr));
     NSLog(@"sStr==%p--%p",_sStr,&(_sStr));
     string = @"999";
     NSLog(@"string==%p--%p",string,&(string));
     NSLog(@"cStr==%@,sStr==%@",self.cStr,self.sStr);
        
     //通过输出可以看出:指针的地址发生了变化,但是指针指向的地址没有发生变化。string重新赋值(自身(地址)发生了变化),指向了的地址也发生了变化,本身指向地址发生了变化。cStr和sStr没有发生变化。
    
     NSMutableString *muStr = [NSMutableString stringWithString:@"456"];
     self.cStr2 = muStr;
     self.sStr2 = muStr;
     NSLog(@"string==%p--%p",muStr,&(muStr));
     NSLog(@"cStr==%p--%p",_cStr2,&(_cStr2));
     NSLog(@"sStr==%p--%p",_sStr2,&(_sStr2));
     [muStr appendString:@"1111"];
     NSLog(@"cStr==%@,sStr==%@",self.cStr2,self.sStr2);
     //通过输出可以看到cStr2和sStr2地址和string不一样,cStr指向的地址发生了变化,copy了一份内容。sStr2指向的内容发生变化,即指向的地址没变化,还是muStr的地址。muStr地址的内容变化了,sStr2的指向的地址的值也变化了。
     2018-10-24 22:56:52.097643+0800 LocalTestProject[1208:28795] string==0x10727a178--0x7ffee89854d8
     2018-10-24 22:56:52.097797+0800 LocalTestProject[1208:28795] cStr==0x10727a178--0x7fd16fd0cc08
     2018-10-24 22:56:52.097930+0800 LocalTestProject[1208:28795] sStr==0x10727a178--0x7fd16fd0cc00
     2018-10-24 22:56:52.098015+0800 LocalTestProject[1208:28795] string==0x10727a1f8--0x7ffee89854d8
     2018-10-24 22:59:02.559413+0800 LocalTestProject[1208:28795] cStr==123,sStr==123
     2018-10-24 22:59:05.719142+0800 LocalTestProject[1208:28795] string==0x60400005e510--0x7ffee89854d0
     2018-10-24 22:59:05.719330+0800 LocalTestProject[1208:28795] cStr==0xa000000003635343--0x7fd16fd0cc18
     2018-10-24 22:59:05.719448+0800 LocalTestProject[1208:28795] sStr==0x60400005e510--0x7fd16fd0cc10
     2018-10-24 22:59:07.172499+0800 LocalTestProject[1208:28795] cStr==456,sStr==4561111
    

    相关文章

      网友评论

          本文标题:iOS中copy和strong的区别

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