NSCopy  NSMutableCopy

拷贝分为深拷贝和浅拷贝   浅拷贝:不产生新的对象,直接指向原有对象

深拷贝:产生新的对象,其内容是原有对象的内容

 

拷贝:NSCopy、NSMutableCopy

NSCopy拷贝出的结果是不可变对象,跟其接受类型没有关系,跟其传入类型也没有关系,NSMutablecopy拷贝的结果是可变对象,跟其传入的类型没有关系,但是会受其接收类型的影响,

 

当使用NSCopy复制一个不可变对象时,其行为是浅复制,其余情况都是深拷贝

当使用NSMutablecopy时,是深拷贝

 

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {

@autoreleasepool {

/*  NSCopy

NSString *str = [NSString stringWithFormat:@"123"];

NSString *str1 = [str copy];

NSMutableString *str2 = [str copy];

NSMutableString *str3 = [NSMutableString stringWithFormat:@"222"];

NSString *str4 = [str3 copy];

NSLog(@"%p,%p",str1,str);

*/

/* NSMutableCopy*/

NSString *str = [NSString stringWithFormat:@"123"];

NSMutableString  *s = [str mutableCopy];

[s setString:@"23"];

NSLog(@"%p,%p",s,str);

}

return 0;

}

时间: 2024-08-08 01:27:59

NSCopy  NSMutableCopy的相关文章

NSNumber NScopy

NSNumber生成: NSNumber *number1 = [[NSNumber alloc] initWithInt:1000]; 转成NSNumber型: // short型→NSNumber型 NSNumber *num = [NSNumber numberWithShort:32767]; // int型→NSNumber型 NSNumber *num = [NSNumber numberWithInt:2147483647]; // long型→NSNumber型 NSNumber

ios对象copy的方法,要实现nscopy协议

ios对象copy的方法,要实现nscopy协议 by 伍雪颖 - (id)copyWithZone:(NSZone *)zone { RestEntity *copy = [[[self class] allocWithZone:zone] init]; copy.dishId = _dishId; return copy; } - (id)mutableCopyWithZone:(NSZone *)zone { RestEntity *copy = [RestEntity allocWith

Objective -C 之copy(复制)

在这里首先提及的就是定义属性是用的属性列表中的copy @property(nonatomic,copy)NSString *name: 在这里我定义了一个Person类,此处不再陈述 下面是代码 Person *p = [[Person alloc] init]; NSMutableString *s = [[NSMutableString alloc] initWithFormat:@"123"]; p.name = s;   //此时,name的值为@"123"

IOS开发系列—Objective-C之Foundation框架(转)

概述 我们前面的章节中就一直新建Cocoa Class,那么Cocoa到底是什么,它和我们前面以及后面要讲的内容到底有什么关系呢?Objective-C开发中经常用到NSObject,那么这个对象到底是谁?它为什么又出现在Objective-C中间呢?今天我们将揭开这层面纱,重点分析在IOS开发中一个重要的框架Foundation,今天的主要内容有: Foundation概述 常用结构体 日期 字符串 数组 字典 装箱和拆箱 反射 拷贝 文件操作 归档 Foundation概述 为什么前面说的内

IOS开发系列—Objective-C之Foundation框架

概述 我们前面的章节中就一直新建Cocoa Class,那么Cocoa到底是什么,它和我们前面以及后面要讲的内容到底有什么关系呢?Objective-C开发中经常用到NSObject,那么这个对象到底是谁?它为什么又出现在Objective-C中间呢?今天我们将揭开这层面纱,重点分析在IOS开发中一个重要的框架Foundation,今天的主要内容有: Foundation概述 常用结构体 日期 字符串 数组 字典 装箱和拆箱 反射 拷贝 文件操作 归档 Foundation概述 为什么前面说的内

关于深拷贝和浅拷贝的理解

一.深拷贝与前拷贝的区别 浅拷贝是拷贝指针,深拷贝是拷贝对象内容. 二.关于遵循NSCopy和NSMutableCopy协议后的copy及mutablCopy区别 1.非集合不可变对象,copy是浅拷贝,mutableCopy是深拷贝: 2.非集合可变对象,copy和mutableCopy是深拷贝: 3.集合不可变对象,copy是浅拷贝,mutableCopy是深拷贝,但集合中的对象还是浅拷贝: 4.集合可变对象,copy和mutableCopy是深拷贝,但集合中的对象均是浅拷贝. 三.如何实现

oc_转_Foundation 框架

概述 IOS开发中一个重要的框架Foundation,主要内容有: Foundation概述 常用结构体 日期 字符串 数组 字典 装箱和拆箱 反射 拷贝 文件操作 归档 Foundation概述 为什么前面说的内容中新建一个类的时候我们都是选择Cocoa Class呢?Cocoa是什么呢? Cocoa不是一种编程语言(它可以运行多种编程语言),它也不是一个开发工具(通过命令行我们仍然可以开发Cocoa程序),它是创建Mac OS X和IOS程序的原生面向对象API,为这两者应用提供了编程环境.

一个java程序员自学IOS开发之路(三)

  2015/10/10 Day 14 装箱和拆箱 数组和字典中只能存储对象类型,其他基本类型和结构体是没有办法放到数组和字典中的,当然你也是无法给它们发送消息的(也就是说有些NSObject的方法是无法调用的),这个时候通常会用到装箱(boxing)和拆箱(unboxing).其实各种高级语言基本上都有装箱和拆箱的过程,就像Java中有基本数据类型包装类 在ObjC中我们一般将基本数据类型装箱成NSNumber类型(当然它也是NSObject的子类,但是NSNumber不能对结构体装箱),调用

IOS学习笔记--Objective-C之Foundation框架

概述 原文地址:http://www.cnblogs.com/kenshincui/p/3885689.html 我们前面的章节中就一直新建Cocoa Class,那么Cocoa到底是什么,它和我们前面以及后面要讲的内容到底有什么关系呢?Objective-C开发中经常用到NSObject,那么 这个对象到底是谁?它为什么又出现在Objective-C中间呢?今天我们将揭开这层面纱,重点分析在IOS开发中一个重要的框架 Foundation,今天的主要内容有: Foundation概述 常用结构