iOS MVC架構優化

2021-09-27 09:39:07 字數 2585 閱讀 7528

mvc 架構問題:

使用者**,業務邏輯,ui ,內部方法,**封裝導致:

vc**過於繁重(封裝)

**耦合性過高(解耦)

1.tableview優化之封裝(初始化方法和**方法封裝)

hkdatasource.h

#import

#import

typedef

void(^cellconfigure)(id cell , id model, nsindexpath *indexpath);

@inte***ce hkdatasource : nsobject@property (nonatomic, strong) nsmutablearray *dataarray ;

//自定義初始化方法

- (id)initwithidentifier:(nsstring *)identifier configureblock:(cellconfigure)configure;

//cellidentifier

@property (nonatomic, strong) ibinspectable nsstring *cellidentifier ;

//cellconfigure

@property (nonatomic, copy) cellconfigure cellconfigure ;

- (void)adddataarray:(nsarray*)array;

- (id)modelsatindexpath:(nsindexpath*)indexpath;

@end

hkdatasource.h

#import

"hkdatasource.h

"@implementation

hkdatasource

- (id)initwithidentifier:(nsstring *)identifier configureblock:(cellconfigure)configure

return

self;

}-(void)adddataarray:(nsarray *)array

if (self.dataarray.count>0

) [self.dataarray addobjectsfromarray:array];

}- (id)modelsatindexpath:(nsindexpath*)indexpath

-(nsinteger)tableview:(uitableview *)tableview numberofrowsinsection:(nsinteger)section

-(uitableviewcell *)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpath

return

cell;

}@end

使用:

static nsstring * reuseid = @"

reuseid";

@inte***ce

viewcontroller ()

@property (nonatomic, strong) uitableview *tableview;

@property (nonatomic, strong) nsmutablearray *dataarray ;

@property (nonatomic, strong) hkdatasource *datasource ;

@end

@implementation

viewcontroller

- (void

)viewdidload ];

[self loaddata];

[self.datasource adddataarray:self.dataarray];

self.view.backgroundcolor =[uicolor whitecolor];

[self.view addsubview:self.tableview];

self.tableview.datasource =self.datasource;

}- (void

)loaddata ,

@,@,

@];for (int i = 0; i)

}-(uitableview *)tableview

return

_tableview;

}@end

2.cell耦合性強(解耦)

mvctableviewcell * cell

cell.model = _dataarray[indexpath.row].

cell 內部(setmodel:+ui賦值)[耦合性太強…]

3.cell復用 ui改變了->model不變(雙向繫結)

self.model.num = self.numlabel.text;

iOS MVC 架構模式

2 view 檢視物件 3 controller 控制器物件 直到進行單元測試的時候才會發現問題越來越明顯。因為你的 viewcontroller 和 view 是緊密耦合的,對它們進行測試就顯得很艱難 你得有足夠的創造性來模擬 view 和它們的生命週期,在以這樣的方式來寫 view contro...

IOS MVC模式初探

在進行ios程式開發的時候,若對mvc設計模式不了解的話,是很難做出良好效能的程式.現將作者本人對於mvc設計模式的一些 粗淺看法記載餘下,希望能對讀者有所幫助.1 模型 在模型物件中封裝資料和基本行為 運算元據的邏輯 模型物件可以復用,因為它表示的知識適用與特定的問題領域.只要載入的是包含有應用程...

iOS MVC設計模式詳解

m model 模型層 負責儲存資料 繼承自 nsobject v view 檢視層 負責向使用者展示資料,繼承自 uiview c controller 控制器層 負責將 model 層的資料傳遞到 view 層,繼承 uiviewcontroller model層 負責定義model的屬性 vi...