• 写给iOS小白的MVVM教程(序)


    这几天,需要重构下部分代码,这里简要记录下.但是涉及的技术要点还是很多,所以分为多个篇章叙述.此教程来源于,并将于应用于实践,不做过多的概念性阐释和争论.每个篇章都会附上实际的可执行的代码.因涉及的技术点,有许多探索的部分,暂定每两天更新一个篇章.欢迎广大iOS同行,批评指正!

    教程内容,按更新顺序排序

    • 从MVC到MVVM: 结合实际的例子,提出并应用一种从MVC迁移到MVVM的可行性方案.
    • 使用RestKit简化网络请求: 此处会结合RestKit,提出并制作一个可直接应用于代码的网络请求实现方案,支持自动翻页,自动配置URL与数据模型的关联关系等.
    • 使用MVVM模式,实现iOS122.com网站的博客阅读: 会涉及到使用Leancloud做服务器端,使用marddown库解析markdwon内容,一个更加实际的MVVM各技术细节的具体实现技巧.

    定义良好的接口,是成功的第一步!

    //
    //  YFMVVMDelegate.h
    //  iOS122
    //
    //  Created by 颜风 on 15/10/13.
    //  Copyright (c) 2015年 iOS122. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    @protocol YFMVVMRequestDelegate;
    
    
    
    /**
     *  MVVM协议,用于规定MVVM模式的基本约定.
     *
     *  常用于约定"V",此处的V,指的是视图的载体,或者是连接点.可以是一个View,也可以是一个控制器,或者任意NSObject对象.
     */
    @protocol YFMVVMDelegate <NSObject>
    
    @required
    @property (nonatomic, strong) id model; //!< 数据模型,用于表示从外部传入的数据.
    @property (nonatomic, strong, readonly) id viewModel; //!< 数据模型,用于表示直接在视图上显示的数据模型.
    
    @optional
    @property (nonatomic, strong) id<YFMVVMRequestDelegate> request; //!< 网络请求.用于联网动态更新数据.
    
    @end
    
    /**
     *  用于规定MVVM中的request网络请求的协议.
     */
    @protocol YFMVVMRequestDelegate <NSObject>
    
    @required
    
    /**
     *  获取数据.
     *
     *  @param component   MVVM组件中的V部分,可以是一个View,也可以是一个控制器,或者任意NSObject对象.
     *  @param success     请求成功时的回调.会把视图模型回调出去.
     *  @param failure     请求失败时的回调.会把错误信息回调出去.
     */
    -(void) get: (id<YFMVVMDelegate>) component
        success: (void (^)(id))success
        failure:(void (^)(NSError *))failure;
    
    @optional
    
    /**
     *  重置页码,从头刷新.
     *
     *  下次调用 get:success:failure 方法时,会获取最新的数据.
     */
    -(void) reset;
    
    /**
     *  移动到下一页.
     *
     *  下次调用 get:success:failure 方法时,会获取下一页的数据.
     */
    -(void) nextPage;
    
    @end
    
  • 相关阅读:
    Android : iperf-2.0.4 网络测试工具
    Android : SELinux 简析&修改
    Android : 修改内核源码 and 编译、打包成新的boot.img
    Bluedroid: 音频数据的传输流程
    Bluedroid: 蓝牙协议栈源码剖析
    【Java】 剑指offer(54) 二叉搜索树的第k个结点
    【Java】 剑指offer(53-3) 数组中数值和下标相等的元素
    【Java】 剑指offer(53-2) 0到n-1中缺失的数字
    【Java】 剑指offer(53-1) 数字在排序数组中出现的次数
    【Java】 剑指offer(52) 两个链表的第一个公共结点
  • 原文地址:https://www.cnblogs.com/ios122/p/4875519.html
Copyright © 2020-2023  润新知