iOS 中关于copy和mutable copy的理解

来源:互联网 发布:单片机dl是什么意思啊 编辑:程序博客网 时间:2024/04/29 08:50

 //可变到不可变的copy

    NSMutableArray * array1 = [NSMutableArrayarrayWithObjects:@"d",@"hy",nil];

   NSArray * array2 = [array1copy];

    //这种拷贝后指针的指向发生变化,也就是开辟了新的内存空间

    NSLog(@"array1:%p,array2%p,array1:%@,array2:%@",array1,array2,array1,array2);

    //不可变到不可变的copy

   NSArray * array3 = [array2copy];

    NSLog(@"array2:%p,array3:%p,array2:%@,array3%@",array2,array3,array2,array3);

    //这种拷贝后,指针不发生变化,指向同一空间,内容也一样。

    ///////////////////////////////////////////////

    //mutablecopy,下面这两种copy对应的地址都变化了,所以另外开辟了新的空间。

   NSMutableArray * array4 = [array1mutableCopy];

    NSLog(@"array1:%p,array4:%p,array1:%@,array4:%@",array1,array4,array1,array4);

   NSArray * array5 = [array2mutableCopy];

    NSLog(@"array2:%p,array5:%p,array2:%@,array5:%@",array2,array5,array2,array5);



2015-09-16 20:03:27.208 copy and mutableCopy[3933:205390] array1:0x7ffcfaf1b130,array20x7ffcfaf10c90,array1:(

    d,

    hy

),array2:(

    d,

    hy

)

2015-09-16 20:03:27.209 copy and mutableCopy[3933:205390] array2:0x7ffcfaf10c90,array3:0x7ffcfaf10c90,array2:(

    d,

    hy

),array3(

    d,

    hy

)

2015-09-16 20:03:27.210 copy and mutableCopy[3933:205390] array1:0x7ffcfaf1b130,array4:0x7ffcfac7fcc0,array1:(

    d,

    hy

),array4:(

    d,

    hy

)

2015-09-16 20:03:27.210 copy and mutableCopy[3933:205390] array2:0x7ffcfaf10c90,array5:0x7ffcfac08db0,array2:(

    d,

    hy

),array5:(

    d,

    hy

)



0 0