转自:https://github.com/yidaizhenlong/LQRequest/issues/1
NSMutableArray array=[[NSMutableArray alloc] initWithObjects:@"a",@"b", nil];
NSMutableArray *deepCopyArray=[[NSMutableArray alloc] initWithArray: array copyItems: YES];
NSMutableArray trueDeepCopyArray = [NSKeyedUnarchiver unarchiveObjectWithData:
[NSKeyedArchiver archivedDataWithRootObject: array]];
[[trueDeepCopyArray objectAtIndex:0] appendString:@"trueDeepCopyArray"];
image
//trueDeepCopyArray是完全意义上的深拷贝,而deepCopyArray则不是,对于deepCopyArray内的不可变元素其还是指针复制。或者我们自己实现深拷贝的方法。因为如果容器的某一元素是不可变的,那你复制完后该对象仍旧是不能改变的,因此只需要指针复制即可。除非你对容器内的元素重新赋值,否则指针复制即已足够。
心得:copy方法,得到的是不可变对象,不管以前的是可变还是不可变。mutableCopy方法,得到的是可变对象,不管以前的是可变还是不可变。
相关推荐
在iOS中,实现完全的深复制并不简单,特别是对于自定义的对象。一种常见的方法是使用序列化和反序列化,例如使用NSKeyedArchiver和NSKeyedUnarchiver。首先,将原始对象序列化为NSData,然后反序列化得到一个新的、...
本资料“ios-深拷贝对象.zip”可能包含了关于如何在Objective-C或Swift中实现深拷贝的实践示例,特别是通过使用KNArchiveModel库来实现。 首先,我们需要理解浅拷贝和深拷贝的区别。浅拷贝(Shallow Copy)只是创建...
总之,理解`Array`和`Collection`之间的转换以及复制深度的概念对于编写高效且安全的Java代码至关重要。在实际开发中,选择正确的转换方法和拷贝策略能有效避免潜在的问题,如数据一致性问题和不必要的性能开销。
深复制可以通过`mutableCopy`方法实现,但要注意,`mutableCopy`并不总是进行完全的深复制,而是会根据对象的具体类型决定是深复制还是单层深复制。 完全复制是深复制的一个变种,它确保对象的每一层都被复制,而...
本文将详细解析标题“复制对象(一)copy和mutableCopy方法对应Demo”所涵盖的知识点,包括`copy`和`mutableCopy`方法以及浅复制和深复制的概念。 首先,我们来理解`copy`和`mutableCopy`这两个方法。它们是...
在iOS开发中,了解浅拷贝和深拷贝的概念至关重要,因为它们直接影响到对象的生命周期和内存管理。本文将深入浅析iOS中的`copy`和`mutableCopy`方法,以及它们与`retain`操作的区别。 首先,`copy`方法用于创建一个...
可变数组(Mutable Array)是一种可动态调整大小的数组,支持增加、删除和查找元素等操作。在C语言中,可变数组可以通过动态内存分配来实现,例如使用malloc和realloc函数来调整数组的大小。具体实现包括以下几个...
Swift标准库中提供了多种基础数据结构,如数组(Array)、字典(Dictionary)、集合(Set)等,这些数据结构都遵循协议,具有一定的通用方法,如map、filter、reduce等。算法在软件开发中占据着核心地位,Swift提供...
- **深拷贝**:不仅复制对象本身,还会复制对象所包含的所有子对象,并为这些子对象分配新的内存空间。这意味着即使修改了拷贝的对象,也不会影响到原始对象的数据。 ```objective-c NSArray *originalArray = @...
- **copy关键字**主要用于复制可变对象(如NSMutableString、NSMutableArray等),以确保在setter方法中设置的属性值是一个深拷贝。这样即使原始对象被修改,也不会影响到属性的值。这对于确保数据完整性非常重要,...
`NSArray`类采用了`NSCopying`和`NSMutableCopying`协议,允许数组被复制或深拷贝。 **任务** - **初始化数组**:提供了多种初始化方法,如从其他数组、指定范围或指定值初始化。 - **查询数组信息**:包括获取...
它们都实现了NSCopying和NSMutableCopying协议,可以进行浅复制或深复制。使用NSArray或NSMutableArray时,需注意内存管理,遵循ARC(Automatic Reference Counting)规则。 2. 字典(Dictionary): OC中的字典类...
浅拷贝仅复制数组中的指针,而不复制对象本身。深拷贝会创建数组中每个对象的新实例。以下展示了这两种拷贝的方法: 浅拷贝: ```objc NSMutableArray *newArray = [NSMutableArray alloc] init]; NSArray *...
Delphi是一款基于Object Pascal语言的集成开发环境(IDE),它提供了一套完整的工具链,用于创建Windows、macOS、iOS和Android等平台的应用程序。在Delphi中,我们通常使用VCL(Visual Component Library)框架来...
如果要将游戏做成iOS应用,那么还需要使用Swift的UIKit框架来创建用户界面,包括滑动的手势识别、按钮事件处理、视图更新等。 10. **测试驱动开发**(TDD): 使用Swift的XCTest进行单元测试,确保每个游戏规则都...
不过,实际上,`MJExtension`已经为常见的Objective-C类(如`NSDictionary`,`NSArray`,`NSString`等)以及Swift的`Dictionary`和`Array`提供了默认的实现,所以大多数情况下,你无需为每个模型类做特别的实现。...
`NSArray`实现了`NSCopying`和`NSMutableCopying`协议,允许数组对象被复制或深拷贝。 **Tasks** - 创建数组实例 - 访问和遍历数组元素 - 操作数组,如查找特定元素、计算元素数量等 **Class Methods & Instance ...