這幾天,需要重構下部分代碼,這里簡要記錄下.但是涉及的技術要點還是很多,所以分為多個篇章敘述.此教程來源於,並將於應用於實踐,不做過多的概念性闡釋和爭論.每個篇章都會附上實際的可執行的代碼.因涉及的技術點,有許多探索的部分,暫定每兩天更新一個篇章.歡迎廣大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