NSCopying和NSCoding对象序列化反序列化基础详解

本文详细介绍了NSCopying协议的使用,包括浅拷贝和深拷贝的区别,以及如何在自定义类中实现复制操作。同时,讨论了NSCoding协议在对象序列化和反序列化中的应用,提供了一个简单的实例来说明如何实现这两个方法。通过对象的序列化,可以实现深拷贝,将对象持久化存储或在网络中传输。

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

你要知道的NSCopying、NSCoding协议及对象序列化和反序列化都在这里

转载请注明出处 http://blog.youkuaiyun.com/u014205968/article/details/78260402

本篇文章主要讲解NSCopying协议,以及NSCoding协议实现对象的序列化和反序列化,实际开发中如果要自己造轮子这两个协议还是比较重要的。

NSCopying协议

Foundation框架中为我们提供的基础的类基本都实现了NSCopying协议,因此,我们可以使用copy方法用来获取对象的一个不可变副本对象,可以使用mutableCopy方法用来获取对象的一个可变副本对象,当需要对自定义类调用copymutableCopy方法就需要实现NSCopying协议。首先我们看一下NSString类的复制操作。有如下代码:

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

        NSString *string = @"Jiaming Chen";
        NSString *copyString = [string copy];
        NSMutableString *mutableCopyString = [string mutableCopy];
        //输出: 0x1000020a8 0x1000020a8 0x10058ccb0
        NSLog(@"%p %p %p", string, copyString, mutableCopyString);

        NSMutableString *mutableString = [[NSMutableString alloc] initWithString:@"Jiaming Chen"];
        NSString *copyMutableString = [mutableString copy];
        NSMutableString *mutableCopyMutableString = [mutableString mutableCopy];
        //输出: 0x100403f90 0x100403ef0 0x100403fd0
        NSLog(@"%p %p %p", mutableString, copyMutableString, mutableCopyMutableString);

        NSString *str = @"Jiaming Chen";
        NSString *copyStr = [str copy];
        NSMutableString *mutableCopyStr = [str mutableCopy];
        //输出: 0x100404060 0x7fffa86ddd40 0x1004040a0
        NSLog(@"%p %p %p", str, copyStr, mutableCopyStr);

        NSString *errorStr = @"Jiaming Chen";
        NSMutableString *errorMutableStr = errorStr;
        NSString *copyE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值