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

發佈了71 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章