写给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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏假装我会写代码

在 Laravel 中使用 emoji 表情

993
来自专栏QQ会员技术团队的专栏

一起脱去小程序的外套和内衣:微信小程序架构解析

微信小程序的公测掀起了学习小程序开发的浪潮,天生跨平台,即用即走、媲美原生体验、完善的文档、高效的开发框架,小程序给开发者带来了很多惊喜。通过这篇文章和大家一起...

5.1K3
来自专栏ytkah

测试了小程序的内嵌网页总结几点

  11月2日深夜微信团队宣布小程序内嵌页面开放了,很多开发者已经测试了小程序的内嵌网页,他们总结了以下几点: 1、内嵌网页的域名需要在小程序管理后台设置为业务...

2905
来自专栏华仔的技术笔记

React Native 初探

3206
来自专栏程序员的知识天地

web前端学习:React是什么,为什么要使用它?

React是Facebook内部的一个JavaScript类库,已于1年开源,可用于创建Web用户交互界面。它引入了一种新的方式来处理浏览器DOM。那些需要手动...

752
来自专栏河湾欢儿的专栏

HTML简介

必备条件是什么? 1>会上网,会打字,懂得互联网是什么 2>兴趣 3>肯练习

652
来自专栏PHP在线

浅谈Ajax的优缺点

AJAX (Asynchronous JavaScript and XML) 是一种交互式动态web应用开发技术,该技术能提供富用户体验。完全的 AJAX应用给...

4436
来自专栏ThoughtWorks

#TW好文集锦# GUI应用的若干问题和模式

GUI应用的若干问题和模式 文/李光磊 我们所开发的应用程序大多都需要提供一个图形用户界面(GUI)。关于GUI应用的架构设计, 已经有了很多模式, 比如Ma...

2787
来自专栏我杨某人的青春满是悔恨

常见的客户端架构解析

最早的 MVC 于 1979 年提出,当时还需要程序员全权处理用户输入——Controller 的职责。而现在,大部分事情已经被操作系统做了,我们已经做不到“V...

1003
来自专栏前端大白专栏

react 的state数据更新机制

2257

扫码关注云+社区