协议归档

本文介绍了编程中的协议概念及其语法,并详细阐述了归档(archive)的原理与使用方法,包括归档对象需要遵循的规定及具体操作步骤。

  —————————— 协议和归档的复习—————————

一、协议
【认识协议】1、从生活角度:就业协议、贷款协议、租赁协议、保密协议、……协议就是约束遵从协议的人的行为
    2、从编程角度程序中的协议是约束遵从协议的对象的行为,规定遵从协议的对象的接口(方法)
【协议语法】
声明协议
@protocol WriteCodeProtocol <NSObject>
- (void)writeCodeUseOC;
@end
遵从协议
@interface JYMonkey : NSObject<WriteCodeProtocol>
遵从多个协议<协议1,协议2>
1、一个类遵从了协议,需要实现协议中规定的方法;一个类遵从了协议,该类的对象也就遵从了协议。
2、遵从协议的id指针,只能指向遵从协议的对象
3、遵从协议的id指针,只能调用协议中规定的方法    
4、协议中的方法有两类
@required(必需实现的)
@optional(选择实现的)
【协议作用】
1、统一接口(类似于继承)
2、模拟实现多继承
3、实现委托代理(明天讲)
二、归档(archive)
【认识归档】
1、归档就是将对象按照特定的顺序写入到文件中,以便以后再次从文件中读取对象。
2、解档就是从已经归档的文件中读成对象的过程
3、进行归档的对象所属的类必需遵从NSCoding协议,必需实现协议中规定的方法
- (void)encodeWithCoder:(NSCoder *)aCoder;
- (id)initWithCoder:(NSCoder *)aDecoder;
4、进行归档的对象的子对象也要遵从NSCoding,也要实现协议中规定的方法,否则归档会失败
【归档使用】
 1、系统类的归档,见【系统类的归档】
BOOL ret = [NSKeyedArchiver archiveRootObject:dic toFile:PATH];
id obj = [NSKeyedUnarchiver unarchiveObjectWithFile:PATH];
  2、自定义类归档,见【自定义类归档】
- (void)encodeWithCoder:(NSCoder *)aCode
{
    [aCode encodeObject:_className forKey:@"className"];
    [aCode encodeObject:_student forKey:@"student"];
}
- (id)initWithCoder:(NSCoder *)aDecoder
{
    if (self = [super init]) {
        _className = [aDecoder decodeObjectForKey:@"className"];
        _student = [aDecoder decodeObjectForKey:@"student"];
    }
    return self;
}

JYClass:<NSCoding>
className(NSString)
student(JYStudent)

JYStudent:<NSCoding>
name
age
grade
number
    JYClass
     /           \
       /               \
className      student(JYStudent)
(NSString)     /   |    \        \
           /   |      \       \
        name  age  grade    number


转载于:https://www.cnblogs.com/rainwz/p/4586931.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值