• OC系列高级-代理


    一.代理实现

    1.新建两个类PersonOne和PersonTwo,PersonOne有件事需要做,打算交给别人去做。那么PersonOne有一个协议:

    @protocol SomeThing <NSObject>
    
    -(NSString *)doSomeThing:(NSString *)str;
    
    @end

    PersonOne开始招人

    @interface PersonOne : NSObject
    
    @property (weak) id delegate;
    
    @end

    2.PersonTwo发现自己能做这件事,于是去应聘了。引入delegate类

    #import <Foundation/Foundation.h>
    #import "PersonOne.h"
    
    @interface PersonTwo : NSObject<SomeThing>
    
    @end
    

    并且PersonTwo要会做这件事

    #import "PersonTwo.h"
    
    @implementation PersonTwo
    
    - (NSString *)doSomeThing:(NSString *)str{
        return str;
    }
    
    @end

    3. 实现委托人和被委托人关联

            PersonOne *pA = [[PersonOne alloc]init];
            PersonTwo *pB = [[PersonTwo alloc]init];
            pA.delegate = pB;
    

    4.委托关系确定后,委托人去做这件事吧

    if(pA.delegate && [pA.delegate respondsToSelector:@selector(doSomeThing:)]){
                [pA.delegate doSomeThing:@"hello world"];
    }

    5总结

    代理这个设计模式主要用于传值,比如两个页面,a页面跳转到b页面,当b页面发生某些改变时需要通知页面a知道,那么就可以用代理来实现

    未来的你会感谢今天努力的自己 ------Alen
  • 相关阅读:
    【ZJ选讲·压缩】
    【ZJ选讲·调整】
    【ZJ选讲·钻石游戏】
    【ZJ选讲·BZOJ 5073】
    【ZJ选讲·BZOJ 5071】
    【模拟赛·polyline】
    【BZOJ 2744 朋友圈】
    【BZOJ 2241 打地鼠】
    【CF edu 30 D. Merge Sort】
    【CF edu 30 C. Strange Game On Matrix】
  • 原文地址:https://www.cnblogs.com/kaihuacheng/p/5618270.html
Copyright © 2020-2023  润新知