寫給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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM