代理和协议的简单讲解,和自己的一些见解

B类的值要传到A类,但是B做不到,所以B需要一个代理去执行这个传值的方法,所以就会委托A去执行
1 首先是协议的声明
位置:
#import  <UIKit/UIKit.h>

//申明一个协议
@protocol  SecondViewDelagate < NSObject ]]]]>

@end
2 然后声明协议的类里面定义一个方法让遵守该协议的类去执行
#import  <UIKit/UIKit.h>

//申明一个协议
@protocol  SecondViewDelagate < NSObject ]]]]>

//用来刷新新的功能,这个方法(其实就是改变值或者是刷新值得方法)要在遵守这个协议的类里面去实现
- (
void )refresh:( NSString  *)sender;

@end

之后要定义一个代理,在这里要注意代理的位置:
#import  <UIKit/UIKit.h>

//申明一个协议
@protocol  SecondViewDelagate < NSObject ]]]]>

//用来刷新新的功能,这个方法要在遵守这个协议的类里面去实现
- (
void )refresh:( NSString  *)sender;

@end

@interface  ARSecondViewController :  UIViewController

//定义一个代理
@property  ( nonatomic , weak id  < SecondViewDelagate > delegate;

@end

之后在B类的.m文件里面通过这个代理去做
- (void)viewWillDisappear:(BOOL)animated{
    [
super viewWillDisappear:animated];
    
    
//刷新,在这里用的作用是将代理派发出去(也就是通过代理去修改A中的textlable的值)
    [
self.delegate refresh:self.label.text];
}


总的来说就是协议的声明是在@interface上面,声明的时候关键字是@protocol,注意不要拉下@end。而代理的定义是在@interface的下面
之后在A类的。h里面去遵循这个协议
#import  <UIKit/UIKit.h>
#import 
"ARSecondViewController.h"

@interface  ARFirstViewController :  UIViewController  < SecondViewDelaga
之后在A类的.m里面定义代理
B *B = 【B alloc】init】;

B。delegate = self;B的委托A去做(在这里A就是self)

之后在A类的.m文件里面去实现协议里面的方法
- (void)refresh:(NSString *)sender{
     self.label.text = sender;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值