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

来源:互联网 发布:程序员接活的网站 编辑:程序博客网 时间:2024/05/16 13:07
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,weakid <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;
}

0 0
原创粉丝点击