IOS (oc) 浅谈MVP在ios项目中的使用以及Demo

本文通过一个iOS OC的登录界面示例,详细解释了MVP模式在项目中的应用,旨在降低代码耦合度,增强可维护性。文中介绍了如何创建模型、视图、 presenter及业务逻辑层,以及各组件间的交互方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

个人对于MVP思路的理解,就是开发过程中,数据和界面之间的交互,使用Presenter层管理,较于MVC模式:获取数据,构建对象,在控制器里赋值更新界面;MVP模式思路在获取数据,构造对象后,不直接在控制器中做界面交互逻辑,而是使用控制器层管理,将业务逻辑独立出来,这样便于代码的后期维护,同时降低了控制器的负担以及数据模型和控制器、界面之间的耦合性。

本篇文章以登录界面为例,使用ios的OC语言展示我对于MVP的理解:

登录界面:


首先创建一个空的项目,名为MVPDemoOC,

建立一个名为Classes的文件夹,代码将在该文件夹中:

文件夹UI放置控制器,Biz放置业务逻辑,Model放置数据模型,Presenter放置控制器相应的管理者,View放置管理者和控制器的交互层(注意:文件夹View区别于UIView,文章中实例并未用到UIView文件夹,但在实际开发中,例如TableViewController的cell应放置在UIView中)

在Main.stroyboard中搭建界面,并在ViewController中连接,代码:

#import "ViewController.h"
@interface ViewController ()
{

    __weak IBOutlet UITextField *userName;
    
    __weak IBOutlet UITextField *passWord;
    __weak IBOutlet UIActivityIndicatorView *activityBar;
}
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    activityBar.hidden = true ;
    // Do any additional setup after loading the view, typically from a nib.
}
- (IBAction)loginClick:(UIButton *)sender {
   
}
- (IBAction)clearClick:(UIButton *)sender {

}

@end


建立登录的数据模型(UserModel):

在UserModel.h中,代码:

#import <Foundation/Foundation.h>

@interface UserModel : NSObject
@property ( nonatomic , copy ) NSString * username;
@property ( nonatomic , copy ) NSString * password;

@end


在UserModel.m中,代码:

#import "UserModel.h"
@implementation UserModel
@end

建立管理者ViewPresenter的类,包含.h和.m文件,继承NSObject

建立管理者和控制器之间的交互View层,名为MainView。分析:由于View层是用于控制器和管理者(ViewPresenter)的交互,对于管理者,对MainView调用的是一个MainView对象;而在控制器中,需要实现MainView的方法,即为协议。所以MainView可以用协议来实现,在代码中,只需创建MainView.h文件即可(文章后面创建协议均为.h文件,不做单独描述)。代码:

@protocol MainView <NSObject>
@end

现在项目目录如图:

至此,进行分析如下:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值