MVC作为传统的MVC架构,在Cocoa编程中苹果做了一些改进.
VIEw是可以直接访问Model从而,VIEw里会包含Model信息,不可避免的还要包括一些业务逻辑。 在MVC模型里,更关注的Model的不变,而同时有多个对Model的不同显示,即VIEw。所以,在MVC模型里,Model不依赖于VIEw,但是VIEw是依赖于Model的。不仅如此,因为有一些业务逻辑在VIEw里实现了,导致要更改VIEw也是比较困难的,至少那些业务逻辑是无法重用的。
Model 只有数据
@interface MVCModel : NSObject@property (nonatomic,copy) Nsstring *content;@end
VIEw 获取Model中的数据展示
#import <UIKit/UIKit.h>@class MVCModel;@protocol PrintDelegate <NSObject>- (voID)beginPrintTask;@end@interface MVCVIEw : UIVIEw@property (nonatomic,weak) ID<PrintDelegate> delegate;@property (nonatomic,strong) UILabel *contentLabel;-(voID)printContent:(MVCModel *)content;@end
#import "MVCVIEw.h"#import "MVCModel.h"@implementation MVCVIEw- (instancetype)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { UIbutton *btn = [UIbutton buttonWithType:(UIbuttonTypeCustom)]; btn.frame = CGRectMake(100,100,200,50); [btn addTarget:self action:@selector(onClickBtn) forControlEvents:(UIControlEventtouchUpInsIDe)]; [btn setTitle:@"button" forState:(UIControlStatenormal)]; [btn setTitlecolor:[UIcolor redcolor] forState:(UIControlStatenormal)]; [self addSubvIEw:btn]; _contentLabel = [[UILabel alloc]initWithFrame:CGRectMake(100,30)]; [self addSubvIEw:_contentLabel]; } return self;}-(voID)onClickBtn{//vIEw需要更新是通知Controller if (_delegate && [_delegate respondsToSelector:@selector(beginPrintTask)]) { [_delegate beginPrintTask]; }}-(voID)printContent:(MVCModel *)content{ self.contentLabel.text = content.content; }@end
Controller 获取用户点击后将新的数据交给VIEw展示
#import "MVCVIEwController.h"#import "MVCModel.h"#import "MVCVIEw.h"@interface MVCVIEwController ()<PrintDelegate>@property (nonatomic,strong) MVCVIEw *mVIEw;@property (nonatomic,strong) MVCModel *mModel;@end@implementation MVCVIEwController- (voID)vIEwDIDLoad { [super vIEwDIDLoad]; _mVIEw = [[MVCVIEw alloc]initWithFrame:self.vIEw.bounds]; _mVIEw.backgroundcolor = [UIcolor lightGraycolor]; _mVIEw.delegate = self; [self.vIEw addSubvIEw:_mVIEw]; _mModel = [[MVCModel alloc]init]; // Do any additional setup after loading the vIEw.}-(voID)beginPrintTask{ int rand = arc4random()%10; _mModel.content = [Nsstring stringWithFormat:@"%d",rand]; [_mVIEw printContent:_mModel];}总结
以上是内存溢出为你收集整理的iOS架构(一)--MVC全部内容,希望文章能够帮你解决iOS架构(一)--MVC所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)