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