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

一、画图

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

二、图解

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. HDU 2196Computer(树形DP)

    给你一颗边带权值的树,求树上的每一点距离其最远的一个点的距离 比较典型的题了,主要方法是进行两次DFS,第一次DFS求出每一个点距离它的子树的最远距离和次远距离,然后第二次DFS从父节点传过来另一侧的 ...

  2. Java中String对象的不可变性

    首先看一个程序 package reverse; public class Reverse { public static void main(String[] args) { String c1=n ...

  3. 架构探险——第二章(为web应用添加业务功能)

    第二章不使用框架完成了自己的Web应用. 重点: 服务层的完善优化过程,思路 在看这一段的时候引起了无数次的共鸣.相信大家在开始接触Java Web的时候,都做过类似的封装和优化. 第一版 在Serv ...

  4. Editor Scripting学习笔记之Menu Item

    主要用到: MenuItem属性 MenuCommand参数 可能用到: EditorApplication类 Selection类 GameObjectUtility类 FileUtil类 Undo ...

  5. sqlserver 各种判断是否存在(表名、函数、存储过程等)

    库是否存在 if exists(select * from master..sysdatabases where name=N'库名') print 'exists'elseprint 'not ex ...

  6. C语言待研究问题

    1.内存分配 变量的静态分配和静态变量的区别: 变量的静态分配和动态分配 2.堆和栈的区别 3.CPU的并发性 4.变量和参数的区别

  7. j简单的递归

    1 某人写了n封信和n个信封,如果所有的信都装错了信封.求所有的信都装错信封共有多少种不同情况. 归纳法例子 1.有n个硬币(n为偶数)正面朝上排成一排,每次将n-1个硬币翻成朝上为止.编程让计算机把 ...

  8. Linux内核高端内存 转

        Linux内核地址映射模型x86 CPU采用了段页式地址映射模型.进程代码中的地址为逻辑地址,经过段页式地址映射后,才真正访问物理内存. 段页式机制如下图.   Linux内核地址空间划分 通 ...

  9. 进程控制之wait和waitpid函数

    当一个进程正常或异常终止时,内核就向其父进程发送SIGCHLD信号.因为子进程终止是个异步事件(这可以在父进程运行的任何时候发生),所以这种信号也是内核向父进程发的异步通知.父进程可以选择忽略该信号, ...

  10. linux入侵检测系统snort安装配置

    队长让俺瞅瞅snort,没想到安装配置都遇到问题...整理下过程,给跟我一样的家伙看看.. 由于本人机器是ubuntu,apt-get 几下就可以了,其实网上有不少这样的文章...之所以还要写就是.. ...