您的位置:首页 > 运维架构

20150619_OC之copy与mutableCopy

2015-07-03 09:12 507 查看
//
//  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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: