• 协议归档


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

    一、协议
    【认识协议】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


  • 相关阅读:
    MYSQL索引
    MYSQL 外键 on语句 多表查询
    MYSQL用户管理
    MYSQL数据类型 表基本操作 表记录增删改 单表查询
    JQuery 引用方式
    JQuery 元素操作 each循环
    Android EditText方框验证码 短信验证码攻略
    android MVP模式介绍与实战
    一些不错的Android开源音视频播放器
    Android可伸缩布局-FlexboxLayout(支持RecyclerView集成)
  • 原文地址:https://www.cnblogs.com/rainwz/p/4586931.html
Copyright © 2020-2023  润新知