美文网首页
协议代理的作用

协议代理的作用

作者: su_19 | 来源:发表于2016-04-12 17:48 被阅读78次

    main.m

    
    //
    //  main.m
    //  05-协议代理的作用(传值)
    //
    //  Created by 余婷 on 16/3/28.
    //  Copyright (c) 2016年 余婷. All rights reserved.
    //
    //场景:上一级界面显示下一级界面的内容
    //分析:下一级界面想要将自己的内容显示在上一级界面,但是自己做不到,需要上一级界面来帮他完成
    
    //三要素:
    //委托:下一级界面(绿色界面)
    //协议:显示指定的内容
    //代理:上一级界面(黄色界面)
    
    
    //使用协议代理完成传值:协议方法带参数(委托将要传的值,通过协议方法的参数传给代理)
    #import <Foundation/Foundation.h>
    #import "YTYellowView.h"
    
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            
            //1.创建黄色界面(代理)
            YTYellowView * yellow = [[YTYellowView alloc] init];
            
            //2.创建绿色界面 (委托)
            YTGreenView * green = [[YTGreenView alloc] init];
            
            //3.设置代理
            green.delegate = yellow;
            
            //显示输入内容
            char a[100];
            scanf("%s", a);
            [green showData:[NSString stringWithUTF8String:a]];
            
        }
        return 0;
    }
    
    
    

    YTYellowView.h

    #import <Foundation/Foundation.h>
    #import "YTGreenView.h"
    
    
    //遵守协议,实现协议方法
    @interface YTYellowView : NSObject <SendDataDelegate>
    
    
    @end
    
    

    YTYellowView.m

    #import "YTYellowView.h"
    
    @implementation YTYellowView
    
    //实现协议方法,打印指定内容
    - (void)show:(NSString *)str{
    
        NSLog(@"显示:%@", str);
    }
    
    @end
    

    YTGreenView.h

    #import <Foundation/Foundation.h>
    
    //2.协议
    @protocol SendDataDelegate <NSObject>
    //让协议方法带参来实现传值
    - (void)show:(NSString *)str;
    @end
    
    //1.委托
    @interface YTGreenView : NSObject
    
    //需要代理
    @property(nonatomic, weak) id<SendDataDelegate> delegate;
    
    
    //告诉代理去显示指定的数据
    - (void)showData:(NSString *)myStr;
    
    @end
    
    

    YTGreenView.m

    #import "YTGreenView.h"
    
    @implementation YTGreenView
    
    - (void)showData:(NSString *)myStr{
    
        //判断代理是否实现了协议方法
        if ([self.delegate respondsToSelector:@selector(show:)]) {
            
            [self.delegate show:myStr];
        }
    }
    
    @end
    
    

    相关文章

      网友评论

          本文标题:协议代理的作用

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