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

一、画图

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

二、图解

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

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

四、总结

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

OC之protocol监听器的实现的更多相关文章

  1. oc中protocol、category和继承的区别

    OC中protocol.category和继承的区别以前还是有点迷糊,面试的时候说的有点混乱,现在结合一些资料总结一下. 利用继承,多态是一个很好的保持"对扩展开放.对更改封闭"( ...

  2. [OC笔记] protocol之我的见解

    OC中的protocol就是和JAVA中interface差不多的东西,但是又不是完全一样的.这个protocol常用来实现委托,也就是自己不实现,当事件产生的时候去回调委托者. 让委托者去执行响应的 ...

  3. OC中protocol、category和继承的关系--转

    开放封闭原则(OCP)就是,“对扩展开放,对更改封闭”.是所有面向对象设计的一个核心宗旨.感兴趣的可以看百度百科的一些解释:http://baike.baidu.com/view/2493421.ht ...

  4. oc语言--protocol(协议)

    一.protocol 1.基本用途 1> 可以用来声明很多方法,但是不能用来声明成员变量 2> 只要某个类遵守了这个协议,就相当于拥有这个协议中的所有方法声明 3> 只要父类遵守了某 ...

  5. swift和oc的protocol的成员变量

    都需要协议实现者提供具体变量: 否则认为不符合协议. @protocol edddd <NSObject> @property(nonatomic, strong) NSObject *e ...

  6. 在编译oc中protocol时出现的错误

    Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang ...

  7. OC语法10——@protocol协议,

    参考资料:博客 @protocol,协议: OC中protocol的含义和Java中接口的含义是一样的,它们的作用都是为了定义一组方法规范. 实现此协议的类里的方法,必须按照此协议里定义的方法规范来. ...

  8. OC和Java的比较

    1.Cocoa是什么?Cocoa是使用OC语言编写的工具包,里面有大量的类库.结构体,说白了其实就相当于java中的标准API.C++中的标准库.OC中没有命名空间的概念,所以使用加前缀来防止命名冲突 ...

  9. OC & java 对比

    Objective-C的语法对比(和Java的对比)    Objective-C的语法对比(和Java的对比) 1.函数的对比 例子: helloworld方法 Java 语言:     publi ...

随机推荐

  1. Network Object NAT配置介绍

    1.Dynamic NAT(动态NAT,动态一对一) 实例一: 传统配置方法: nat (Inside) 1 10.1.1.0 255.255.255.0 global (Outside) 1 202 ...

  2. linux下find查找命令用法

    Linux下find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提供了相当多的查找条件,功能很强大.由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时 ...

  3. Lotus 迁移到Exchange 2010 之准备使用Transport 同步Lotus 相关信息!

    这里我们先来分析下Lotus迁移到Exchange2010 的一些原理,由于存在一定周期的共存时间,因此在共存期间必须来实现相应的同步计划,整个同步计划包含了如下的同步计划:

  4. Magento开发文档(一):Magento入门

    开始之前,首先声明下,Magento开发者手册由Alan Storm发表在Magento官方网站上.总共分八个部分,由浅入深的介绍了Magento的MVC架构及Magento中使用的比较特殊的EAV模 ...

  5. AFNetWorking3.0使用 自签名证书的https请求

    前几日,项目组出于安全角度的考虑,要求项目中的请求使用https请求,因为是企业内部使用的app,因此使用了自签名的证书,而自签名的证书是不受信任的,所以我们就需要自己来做证书的验证,包括服务器验证客 ...

  6. Slave延迟很大的优化方法总结(MySQL优化)

    [http://www.cstor.cn/textdetail_9146.html] 一般而言,slave相对master延迟较大,其根本原因就是slave上的复制线程没办法真正做到并发.简单说,在m ...

  7. HTML要点(五)<iframe>标签

    浏览器支持:全部支持 定义和用法 iframe 元素会创建包含另外一个文档的内联框架(即行内框架). HTML 与 XHTML 之间的差异 在 HTML 4.1 Strict DTD 和 XHTML ...

  8. 用Java实现菱形的打印输出

    import java.util.Scanner; public class dengyao2 { public dengyao2() { super(); } public static void ...

  9. On-board diagnostics connector SAE J1962

    http://en.wikipedia.org/wiki/On-board_diagnostics#Standard_interfaces OBD-II diagnostic connector Th ...

  10. volley开源库乱码问题总结(持续更新)

    之前Android开发一直用的是多层封装的Final框架.最近开始学习使用小巧的volley. 在使用该框架的过程中,出现了数次乱码问题,再次做以总结. 分别是返回数据乱码和提交参数乱码两个问题: 一 ...