• 委托模式


    //个人理解:委托就是自己不想干的事,来让别人来干。这里名词是委托方和被委托方者,被委托者收到委托来帮委托者来做事(小弟帮大哥大做事

    //我们一般用到委托是在被委托者的.h内声明一个协议和对应的协议方法,那么谁遵循了协议谁就是委托者

    //好处是:回调传值;

    //用到一个例子阐述一下委托的具体含义:租客想让中介帮他找到一处房子

    //在main函数内

    #import <Foundation/Foundation.h>

    #import "Buyer.h"

    int main(int argc, const char * argv[]) {

        @autoreleasepool {

            Buyer *buyer = [[Buyer alloc] init];

            [buyer findMediation];

        }

        return 0;

    }

    //创建一个租客类

    #import <Foundation/Foundation.h>

    #import "Mediation.h"

    @interface Buyer : NSObject<PaymentDelegate>//遵循声明的协议    那么就成为了委托者;

    -(void)findMediation;

    @end

     //租客类的.m文件内

    #import "Buyer.h"

    @implementation Buyer

    -(void)findMediation{

        NSLog(@"我需要房源");

        

        Mediation *m = [[Mediation alloc] init];

        m.delegate = self;//告诉他是遵循了这个协议的对象

        [m handle];

    }

    //协议方法的实现,伴随着回调传值

     -(void)payment:(float)money{

        NSLog(@"付钱:%.2f",money);

    }

    //输出结果为:付钱:10

     @end

    //在被委托者的声明文件(.h)中进行协议的声明

    #import <Foundation/Foundation.h>

    @protocol PaymentDelegate <NSObject>//声明的协议

    -(void)payment:(float)money;//协议方法的声明;

    @end

    @interface Mediation : NSObject

    @property (nonatomic, weak) id<PaymentDelegate> delegate;//遵循协议的对象;

    -(void)handle;

    @end

     //创建一个中介类,也就是被委托者

    //在被委托者的声明文件(.h)中进行协议的声明

    #import <Foundation/Foundation.h>

    @protocol PaymentDelegate <NSObject>//声明一个协议

    -(void)payment:(float)money;//声明的协议的方法;

    @end

    @interface Mediation : NSObject

    @property (nonatomic, weak) id<PaymentDelegate> delegate;//遵循协议的对象;

    -(void)handle;

    @end

     //在中介的.m文件内部

    #import "Mediation.h"

     @implementation Mediation

    -(void)handle{

        NSLog(@"找到房源,请给钱");

        

        [_delegate payment:10.0];//这是谁遵循协议谁就调用协议方法;回调方法传值;

    }

    @end

  • 相关阅读:
    保护ASP.NET 应用免受 CSRF 攻击
    在html页头设置不缓存
    ASP.NET MVC – 关于Action返回结果类型的事儿(上)
    UC浏览器 分享到朋友圈和微信好友
    利用java Base64 实现加密、解密
    Java图片工具类,完成图片的截取和任意缩放
    iscroll动态加载数据完美解决方案
    ASP.NET三层架构的分析
    如何用浏览器调试js代码
    练习使用jquery.并将验证强度的功能加到注册页面中
  • 原文地址:https://www.cnblogs.com/wpw19920808/p/5022176.html
Copyright © 2020-2023  润新知