zoukankan      html  css  js  c++  java
  • ObjectiveC 深浅拷贝

    View Code
    /*****************************************
             *
             * 非容器类对象
             *
             *****************************************/
            
            /*mstr和mstrCopy指向的是同一块内存区域,我们称之为弱引用(weak reference)。而mstrMCopy是真正的复制,
             系统为其分配了新内存空间,保存从mstr复制过来的字符串值*/
            
            NSMutableString *mstr = [NSMutableString stringWithString:@"origin"];
            NSMutableString *mstrCopy = [mstr copy];
            NSMutableString *mstrMCopy = [mstr mutableCopy];
            
            NSLog(@"mstr is %@",mstr);
            NSLog(@"mstrCopy is %@",mstrCopy);
            NSLog(@"mstrMCopy is %@",mstrMCopy);
            NSLog(@"*****************************");
            
            /*mstrCopy它所指向的其实是一个imutable对象,是不可改变的,所以会出错*/
            [mstr appendString:@"111"];
            //[mstrCopy appendString:@"222"]; //Error
            [mstrMCopy appendString:@"333"];
            
            NSLog(@"mstr is %@",mstr);
            NSLog(@"mstrCopy is %@",mstrCopy);
            NSLog(@"mstrMCopy is %@",mstrMCopy);
            NSLog(@"*****************************");
            
            /*****************************************
             *
             * 容器类对象
             *
             *****************************************/
            
            /*arrayCopy1是和array指向相同的对象,包括array里面的元素也是指向相同的指针*/
            NSArray *array1     = [NSArray arrayWithObjects:@"a",@"b",@"c",nil];
            NSArray *arrayCopy1 = [array1 copy];
            NSLog(@"array1 retain count: %d",(int)[array1 retainCount]);
            NSLog(@"array1 retain count: %d",(int)[arrayCopy1 retainCount]);
            NSLog(@"array1 %@",array1);
            NSLog(@"arrayCopy1 %@",arrayCopy1);
            
            /*mArrayCopy1是array1的可变副本,指向的对象和array1不同,但是其中的元素和array1中的元素指向的还是同一个对象。
             mArrayCopy1还可以修改自己的对象*/
            NSMutableArray *mArrayCopy1 = [array1 mutableCopy];
            [mArrayCopy1 addObject:@"de"];
            [mArrayCopy1 removeObjectAtIndex:0];
            NSLog(@"mArrayCopy1 %@",mArrayCopy1);
  • 相关阅读:
    二叉树
    oracle 查看某session的历史执行sql情况
    mongodb备份与恢复
    MongoDB数据库基本用法
    常见Oracle HINT的用法
    提高Oracle的WHERE语句性能一些原则
    javascript的类、委托、事件
    Swift数据类型简介(二)
    arcgis api 3.x for js 入门开发系列十七在线天地图、百度地图、高德地图(附源码下载)
    arcgis api 4.x for js之图层管理篇
  • 原文地址:https://www.cnblogs.com/joesen/p/2993049.html
Copyright © 2011-2022 走看看