20150619_OC之copy与mutableCopy

本文通过实例详细解析了Objective-C中copy与mutableCopy方法的区别。介绍了如何使用copy方法从可变或不可变对象创建不可变副本,以及如何利用mutableCopy方法生成可变对象的副本,并展示了实际操作过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//
//  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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值