天天看点

20150619_OC之copy与mutableCopy

//
//  main.m
//  IOS150619_ObjectiveC_CopyAndMutableCopy
//
//  Created by qianfeng on 15/6/19.
//  Copyright (c) 2015年 Peng Junlong. All rights reserved.
//

#import <Foundation/Foundation.h>



int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        //-------------copy----------------------
        //copy:将可变对象及不可变对象Copy生成一个不可变的对象,即返回值是一个不可变对象
        NSString *str = @"Hello World";
        NSString *str1 = [str copy];//str copy生成的是一个不可变的字符串
        NSLog(@"str = %p, str1 = %p",str,str1);
        NSLog(@"str1 = %@",str1);
        //结果:
        //str = 0x100001048, str1 = 0x100001048
        //str1 = Hello World
        
        NSMutableString *str2 = [NSMutableString stringWithString:@"Hello World"];
        NSString *str3 = [str2 copy];
        //NSMutableString *str3 = [str2 copy];
        //[str3 insertString:@"China" atIndex:4]; //  错误,不可变;str2是可变的,而生成的str3是不可变的
        NSLog(@"str2 = %p, str3 = %p",str2,str3);
        NSLog(@"str3 = %@",str3);
        //结果:
        //str2 = 0x1004000c0, str3 = 0x100400160
        //str3 = Hello World
        
        //-------------mutableCopy--------------
        //mutableCopy:将可变或者不可变对象copy,生成可变对象
        NSString *str4 = @"Hello China";
        NSMutableString *str5 = [str4 mutableCopy];
        [str5 insertString:@"ShangHai" atIndex:6];
        NSLog(@"str4 = %p, str5 = %p",str4,str5);
        NSLog(@"str5 = %@",str5);
        //结果:
        //str4 = 0x1000010e8, str5 = 0x100300840
        //str5 = Hello ShangHaiChina
        
        NSMutableString *str6 = [NSMutableString stringWithString:@"Hello China"];
        NSMutableString *str7 = [str6 mutableCopy];
        [str7 insertString:@"ShangHai" atIndex:6];
        NSLog(@"str6 = %p, str7 = %p",str6,str7);
        NSLog(@"str7 = %@",str7);
        //结果:
        //str6 = 0x100300610, str7 = 0x1003001a0
        //str7 = Hello ShangHaiChina
    }
    return 0;
}
           

继续阅读