iOS架构(一)--MVC

iOS架构(一)--MVC,第1张

概述MVC作为传统的MVC架构,在Cocoa编程中苹果做了一些改进. View是可以直接访问Model从而,View里会包含Model信息,不可避免的还要包括一些业务逻辑。 在MVC模型里,更关注的Model的不变,而同时有多个对Model的不同显示,即View。所以,在MVC模型里,Model不依赖于View,但是View是依赖于Model的。不仅如此,因为有一些业务逻辑在View里实现了,导致要更

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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1049421.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存