寫給iOS小白的MVVM教程(序)

iOS122發表於2015-10-13

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

教程內容,按更新順序排序

定義良好的介面,是成功的第一步!

//
//  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

相關文章