Copy和MutalbleCopy

      NSString *srcStr = @"lxc";
        /*
         只要通过拷贝出来的对象,拷贝出来的对象中内容和以前对象中的内容一致
         "一般"情况下拷贝回生成一个新的对象
         为什么会产生一个新的对象:
         1.修改源对象不能影响到副本对象
           修改副本对象不能影响到源对象
         */
        NSMutableString * copyStr = [srcStr mutableCopy];
        NSLog(@"srcStr = %p copyStr = %p",srcStr,copyStr);
        NSLog(@"srcStr = %@ copyStr = %@",srcStr,copyStr);
         如果通过不可变对象调用了copy方法,那么不会生成一个新的对象
         原因:源对象是不能修改的,拷贝出来的对象也是不能修改的
         既然两个都不能修改,所以永远不能影响到另外一个对象
   
        NSString *srcStr = @"lxc";
        NSString *copyStr = [srcStr copy];
        NSLog(@"srcStr = %p copyStr = %p",srcStr,copyStr);
        NSLog(@"srcStr = %@ copyStr = %@",srcStr,copyStr);    
     正是因为调用copy方法有时候会生成一个新的对象,有时候不会生成一个新的对象
      所以:如果没有生成新的对象,我们称之为浅拷贝,本质是指针拷贝
      如果生成了新的对象,我们称之为深拷贝,本质是生成一个新的对象

你可能感兴趣的:(Copy和MutalbleCopy)