美文网首页
OC之代理模式

OC之代理模式

作者: 的的可可 | 来源:发表于2019-08-15 17:40 被阅读0次

我自己用代理模式最多的地方是用来方向传值。如果是顺传的话用属性传值就可以了。

  • 举个例子吧

当我们做登录的时候,需要把值传递上一个页面做处理的情况。
需要在委托方的.h文件中这样写

#import <Foundation/Foundation.h>
//这里是自定义代理协议
@protocol LoginProtocol <NSObject>
//这里是代理方法关键字@optional代表可选实现的方法
@optional
//这里就是自定义的代理方法了(可以带参数,也可以不带参数)
- (void)userLoginWithUsername:(NSString *)username password:(NSString *)password;
@end

然后需要在委托方的.m文件中这样写

#import <UIKit/UIKit.h>
#import "LoginProtocol.h"
/**
 *  当前类是委托类。用户登录后,让代理对象去实现登录的具体细节,委托类不需要知道其中实现的具体细节。
 */
@interface LoginViewController : UIViewController
// 通过属性来设置代理对象
@property (nonatomic, weak) id<LoginProtocol> delegate;
@end

实现部分:

@implementation LoginViewController
- (void)loginButtonClick:(UIButton *)button {
  // 判断代理对象是否实现这个方法,没有实现会导致崩溃
  if ([self.delegate respondsToSelector:@selector(userLoginWithUsername:password:)]) {
      // 调用代理对象的登录方法,代理对象去实现登录方法
      [self.delegate userLoginWithUsername:self.username.text password:self.password.text];
  }
}

然后在代理方的.m文件中这样写

// 遵守登录协议
@interface ViewController () <LoginProtocol> 
@end

@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];

    LoginViewController *loginVC = [[LoginViewController alloc] init];
    loginVC.delegate = self;
    [self.navigationController pushViewController:loginVC animated:YES];
}

/**
 *  代理方实现具体登录细节
 */
- (void)userLoginWithUsername:(NSString *)username password:(NSString *)password {
    NSLog(@"username : %@, password : %@", username, password);
}

相关文章

  • OC之代理模式

    我自己用代理模式最多的地方是用来方向传值。如果是顺传的话用属性传值就可以了。 举个例子吧 当我们做登录的时候,需要...

  • iOS开发之设计模式 - 代理模式

    由《大话设计模式 - 代理模式》的OC和部分Swift的语言转义 代理模式 继上一篇《装饰模式》 代理模式 小明追...

  • iOS开发之设计模式 - 代理模式

    由《大话设计模式 - 代理模式》的OC和部分Swift的语言转义 代理模式 继上一篇《装饰模式》[https://...

  • iOS如何实现多代理模式--OC

    OC 如何实现多代理模式 为什么要使用多代理模式 标题虽然是如何实现多代理模式,但是知道为什么需要实现多代理模式同...

  • OC 代理模式

    举个例子, 一个老总通过坐车去出差,但是一般自己是不开车的,因此委托司机开车送他出差 司机类 Driver.h D...

  • Delegate的基本使用

    代理的基本使用 代理是一种通用的设计模式,在iOS中对代理设计模式支持的很好,有特定的语法来实现代理模式,OC语言...

  • iOS之代理笔记

    代理的基本使用 代理是一种通用的设计模式,在iOS中对代理设计模式支持的很好,有特定的语法来 实现代理模式,OC语...

  • 设计模式-代理

    代理的基本使用 代理是一种通用的设计模式,在iOS中对代理设计模式支持的很好,有特定的语法来实现代理模式,OC语言...

  • 代理

    代理 概念:一种通用的设计模式,在iOS中对代理设计模式支持的很好,有特定的语法来实现代理模式,OC语言可以通过@...

  • 《OC之协议与代理模式》

    一.协议部分 @optional加了这个关键字后 代表下方为可选是否实现方法 不是一定要实现的方法,默认是必须要实...

网友评论

      本文标题:OC之代理模式

      本文链接:https://www.haomeiwen.com/subject/bqqtsctx.html