OC中没有实现NSCopying技术时的深复制技术

最近看书看到一种新的实现深复制对象的技术,使用Foundation的归档技术,下面是代码:

?





1

2

NSData *data = [NSKeyedArchiver
archivedDataWithRootObject:dataArray];

NSMutableArray
*dataArray2 = [NSKeyedUnarchiver
unarchiveObjectWithData:data];

  上述即实现了将dataArray深复制给dataArray2,另外一种简便写法是:

?





1

dataArray2 = [NSKeyedUnarchiver
unarchiveObjectWithData:[NSKeyedUnarchiver
archiveObjectWithRootObject:dataArray]];

  

OC中没有实现NSCopying技术时的深复制技术,布布扣,bubuko.com

时间: 2024-10-08 15:13:45

OC中没有实现NSCopying技术时的深复制技术的相关文章

swift 与 OC中的需要注意知识点

swift oc    *swift有命名空间概念,所谓命名空间即同一个命名空间中相互可以调用不用导入.不同命名空间中可以起相同的名字 swift项目就是一个命名空间 *判断是否是某个类 .协议.方法 *运行时获取类属性列表.属性名称.将C语言字符串转成oc string *基本数据类型,在OC中没有可选,swift中如果定义成可选,运行时同样获取不到,使用KVC会崩溃,所以基本数据类型需要赋初值 *private 的属性,使用运行时,同样获取不到属性,同样会让KVC崩溃 *运行时即运行时执行的

OC中NSString和block的属性时copy,而不用retain

OC中NSString和block的属性时copy,而不用retain   而容器类使用retain NSString 为什么要使用copy,而不是retain 1.首先如果使用retain,只是引用计数+1,并没有生成新的对象,所以效率好 2.但是使用copy安全.因为NSString为NSMutableString 的基类,如果将NSMutableString 以retain的形式赋值给NSString后,后续修改NSMutableString会导致NSString内容的变化,这通常不是我们

OC中给我们提供的一个技术:谓词(NSPredicate).note

OC中给我们提供的一个技术:谓词(NSPredicate)OC中的谓词操作是针对于数组类型的,他就好比数据库中的查询操作,数据源就是数组,这样的好处是我们不需要编写很多代码就可以去操作数组,同时也起到过滤的作用,我们可以编写简单的谓词语句,就可以从数组中过滤出我们想要的数据.非常方便.在Java中是没有这种技术的,但是有开源的框架已经实现了此功能. 下面来看一下具体的例子吧: Person.h objc]  view plaincopy  1. //   2. //  Person.h   3.

OC中的Values——and——Collections

值和集合 在OC中可以使用C中的基本数据类型. 可以在类的实现里面对这些基本数据类型的属性进行C中的:++ – += -= *=等操作. 如下所示: //---------接口声明----------- @interface XYZPerson : NSObject @property int age; -(void)gettingOlder; @end //----------接口实现----------- @implementation XYZPerson -(void)gettingOld

智能指针 与 oc中的指针

智能指针 与 oc中的指针 智能指针的原理及实现 当类中有指针成员时,一般有两种方式来管理指针成员:一是采用值型的方式管理,每个类对象都保留一份指针指向的对象的拷贝:另一种更优雅的方式是使用智能指针,从而实现指针指向的对象的共享. 智能指针(smart pointer)的一种通用实现技术是使用引用计数(reference count).智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针. 每次创建类的新对象时,初始化指针并将引用计数置为1:当对象作为另一对象的副

OC中NSFileManager类 和 copy一些用法

一:NSFileManager的使用 1, 概念:用来管理文件系统,它可以用来进行常见的文件\文件夹的操作(拷贝.剪切.创建等) NSFileManager 使用了单例模式singleton 使用defaultManager方法可以获取那个单例对象 2, 1>常见判断 //1,判断文件或文件夹是否存放 // NSFileManager *fileManager = [NSFileManager defaultManager]; // NSString *path = @"/Users/ll

小结OC中Retain cycle(循环引用)

retain cycle 的产生 说到retain cycle,首先要提一下Objective-C的内存管理机制. 作为C语言的超集,Objective-C延续了C语言中手动管理内存的方式,但是区别于C++的极其非人道的内存管理,Objective-C提出了一些机制来减少内存管理的难度. 比如:内存计数. 在 Objective-C中,凡是继承自NSObject的类都提供了两种方法,retain和release.当我们调用一个对象的retain时,这个 对象的内存计数加1,反之,当我们调用rel

关于OC中消息转发机制的理解以及在项目中的实际应用

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">关于OC中的消息转发机制想必大家都很了解,现在来温习一下:</span> 一.什么是消息转发? @selector 是什么? 1一种类型 SEL 2代表你要发送的消息(方法), 跟字符串有点像, 也可以互转.: NSSelectorFromString()   /   NSS

OC中的socket通信

现在很多客户端和服务器之间的交互都是通过JSON或者XML进行的,但是有时候如果数据量较小,JSON和XML就显得比较冗余 •Socket允许使用长连接,允许应用程序运行在异步模式(提高效率),只有在需要的时候才接收数据 •在iOS中以NSStream(流)来发送和接收数据 •可以设置流的代理,对流状态的变化做出相应 –连接建立 –接收到数据 –连接关闭 – 1.NSStream:数据流的父类,用于定义抽象特性,例如:打开.关闭代理,NSStream继承自CFStream(Core Founda