• OC之protocol监听器的实现


    • 画图
    • 图解
    • 代码
    • 总结

    一、画图

    本人画了一个图(字体和画图水平请忽略)

    二、图解

    1.首先我们上边是一个按钮的类,按钮当中包括了一条线,这个线是什么呢?

    其实难理解就难理解到这条线上了

    1⃣️这条线首先来说属于按钮的一部分,是一个成员变量

    2⃣️这条线中定义了一个协议,什么协议?为什么要定义协议?我想到一个非常好的例子

    我们的电脑想要实现通信,遵循的是TCP/IP协议,协议本身独立了我们电脑存在。但是我们电脑内部默认有那么一个东西让我们实现了这个协议

    3⃣️监听器也实现这个协议,接着上边的例子

    腾讯的qq服务器想知道我们是不是登qq,他就也需要实现TCP/IP协议。相当于我们现在实现了连同

    总结:点击登录qq,通过协议传给腾讯服务器,实现登录。OK!

    三、代码

    1.协议

    //
    //  ButtonProtocol.h
    //  监听器的实现
    //
    //  Created by apple on 14-3-26.
    //  Copyright (c) 2014年 apple. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    @protocol ButtonProtocol <NSObject>
    

     -(void)onClick:(Button *)btn;

    @end

    很简单,协议里面就有一个onClick方法

    2.Button类

    //
    //  Button.h
    //  监听器的实现
    //
    //  Created by apple on 14-3-26.
    //  Copyright (c) 2014年 apple. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    #import "ButtonProtocol.h"
    
    @interface Button : NSObject
    
    //我们说的Button的那条线
    @property (nonatomic, retain) id<ButtonProtocol> delegate;
    
    -(void)press;
    
    @end
    //
    //  Button.m
    //  监听器的实现
    //
    //  Created by apple on 14-3-26.
    //  Copyright (c) 2014年 apple. All rights reserved.
    //
    
    #import "Button.h"
    
    @implementation Button
    
    -(void)press
    {
        [_delegate onClick];
    }
    
    @end

     3.ButtonListener类

    //
    //  ButtonListener.h
    //  监听器的实现
    //
    //  Created by apple on 14-3-26.
    //  Copyright (c) 2014年 apple. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    #import "ButtonProtocol.h"
    
    @interface ButtonListener : NSObject <ButtonProtocol>
    
    @end
    //
    //  ButtonListener.m
    //  监听器的实现
    //
    //  Created by apple on 14-3-26.
    //  Copyright (c) 2014年 apple. All rights reserved.
    //
    
    #import "ButtonListener.h"
    
    @implementation ButtonListener
    
    -(void)onClick
    {
        NSLog(@"按钮被点击了");
    }
    
    @end

     代码都还是挺简单的,主要还是理解。理解了代码就自然出来了

    四、总结

    其实就是一个通信过程,通信双方需要遵守相同的协议。 

  • 相关阅读:
    【福利】idea最新激活码,绝对可用
    最好用的录屏工具Bandicam (班迪录屏)
    markdown改变字体、颜色和大小
    idea 2020最新破解教程(可激活至2089年)
    解决电脑桌面图标变白消失
    常见排序
    算法
    uWSGI、WSGI和uwsgi
    RabbitMQ
    flask请求和应用上下文
  • 原文地址:https://www.cnblogs.com/letougaozao/p/3625678.html
Copyright © 2020-2023  润新知