参考资料:博客

@protocol,协议:

  OC中protocol的含义和Java中接口的含义是一样的,它们的作用都是为了定义一组方法规范。

  实现此协议的类里的方法,必须按照此协议里定义的方法规范来。

  格式:CO中定义协议用@protocol和@end成对使用:@protocol   协议名   <NSObject> .... @end

    另外,OC协议里的方法并不一定要全部实现,@required(必须实现)。@options(可选实现)。若不写这两个关键字,则默认是必须实现的。

    实现协议用尖括号。注意:某类实现协议,是在该类的.h文件里的(@interface Student :NSObject <PersonDelegate>)

    协议是为了定义方法的规范,注意,只是方法的规范。不能定义成员变量等。

 

Person.h:    协议PersonDelegate就写在Person的声明文件里,没问题。

@protocol PersonDelegate <NSObject>  //任何一个协议都要实现元协议NSObject

- void run();
- void sleep(); @end @interface Person : NSObject <PersonDelegate> //Person继承根类NSObject,并实现协议PesonDelegate

@end

Person.m:

#import "Person.h"  //Person的声明和PersonDelegate协议都在里面

@implementation Person

- void run()
{
NSLog(@"跑!");
} - void sleep()
{
NSLog(@"睡!");
} @end

 

协议在iOS开发中的应用:

  在iOS开发中,对UI按钮的操作通常使用代理模式。

  所谓代理,也就是说按钮(Button)被点击后响应动作由”代理“(Listener)帮它完成。(代理作为Button类的一个属性)

  那一个类怎么成为Button的代理呢?它又不知道该Button有哪些响应动作。

  所以,若要成为某Button的代理,则只需实现一个协议(ButtonDelegate),该协议里定义了Button的响应动作的规范。

  (既然你是我的代理,你要帮我实现相应动作,你就要实现这些规范方法。)

  

温馨提示:如果还不能明白,请参考上面的博客链接。

OC语法10——@protocol协议,的更多相关文章

  1. IOS开发-OC学习-protocol(协议)

    在OC语言中,协议是一组方法,里面有两种方法,一种是遵守这个协议的类的实例必须实现的方法,另一种是可以实现也可以不实现的方法. 例如我定义一个学生的协议,这个协议里有两个方法,其中一个是必选的方法:学 ...

  2. swift开发之--Protocol(协议)

    使用object-c语言的同学们肯定对协议都不陌生,但在swift中苹果将protocol这种语法发扬的更加深入和彻底. Swift中的protocol不仅能定义方法还能定义属性,配合extensio ...

  3. SIP (Session Initiation Protocol) 协议

    Session Initiation Protocol 介绍 SIP是VoIP技术最常使用的协议,它是一种应用程序层协议,可与其他应用程序层协议配合使用,以控制Internet上的多媒体通信会话. V ...

  4. OC中的protocol

    一. 简单使用 1. 基本用途 可以用来声明一大堆方法(不能声明成员变量) 只要某个类遵守了这个协议,就相当于拥有这个协议中的所有方法声明 只要父类遵守了某个协议,就相当于子类也遵守了 2. 格式 协 ...

  5. Objective-C( protocol协议)

    protocol 协议 protocol:用来声明方法 1.协议的定义 @protocol 协议名称 <NSObject> // 方法声明列表.... @end 2.如何遵守协议 1> ...

  6. OC语言BLOCK和协议

    OC语言BLOCK和协议 一.BOLCK (一)简介 BLOCK是什么?苹果推荐的类型,效率高,在运行中保存代码.用来封装和保存代码,有点像函数,BLOCK可以在任何时候执行. BOLCK和函数的相似 ...

  7. ISO 基础之 (十三) protocol 协议

    一 简绍 protocol,简单来说就是一系列不属于任何类的方法列表,其中声明的方法可以被任何类实现.这种模式一般称为代理(delegation)模式.通过Protocol定义各种行为,在不同的场景采 ...

  8. 关于OC语法的公开和私有的讨论

    关于OC语法的公开和私有的讨论 OC语法中,类的.h文件向外面暴露类的功能/方法接口,其中定义的属性/方法/协议/类别/类扩展都属于公开的,但实例变量要看限定词(@protected/@public/ ...

  9. (转载)OC学习篇之---协议的概念和用法

    在前一篇文章中我们介绍了OC中类的延展,这一篇文章我们在来看一下OC中协议的概念以及用法,协议也是OC中的一个重点,Foundation框架以及我们后面在写代码都会用到. OC中的协议就是相当于Jav ...

随机推荐

  1. Office 2010 & SharePoint 2010 Service Pack 2现在可用啦

    Access 2010 Runtime SP2 KB2687444 32-bit 64-bit Duet Enterprise for Microsoft SharePoint and SAP SP2 ...

  2. javascript常用的内置对象实用操作

    1.indexOf() 方法  -----这个方法比较常用 返回某个指定的字符串值在字符串中首次出现的位置 使用格式:stringObject.indexOf(substring, startpos) ...

  3. Http权威指南笔记(二) Http状态码大全

    100~199—信息状态码 200~299—成功状态码 客户端发请求时,这些请求通常都是成功的. 300~399—重定向状态码 重定向状态码告知客户端使用代替位置来访问他们所感兴趣的资源. 400~4 ...

  4. web Form 表单method="get" method="post" 区别

    get和post方法的不同 在B/S应用程序中,前台与后台的数据交互,都是通过HTML中Form表单完成的.Form提供了两种数据传输的方式——get和post.虽然它们都是数据的提交方式,但是在实际 ...

  5. Spring事务传播机制详解

    1 事务的传播属性(Propagation) 1) REQUIRED ,这个是默认的属性 Support a current transaction, create a new one if none ...

  6. c语言合法标识符

    #include <iostream>#include <stdio.h>using namespace std;char str[100][51];int main() { ...

  7. ajax.request函数使用详解

    Ajax.Request   ? Ajax.Request( url, { method:method, parameters:para, postBody:xmlString, asynchrono ...

  8. easyui跨iframe属性datagrid

    1.问题 如何刷新easyui父级tab页中iframe嵌套页中的datagrid? 2.解决方法 (1) parent.$("iframe[title='tabtitle']") ...

  9. 05-3. 求a的连续和(15)

    输入两个整数a和n,a的范围是[0,9],n的范围是[1,8],求数列之和S = a+aa+aaa+...+aaa...a(n个a). 如a为2.n为8时输出的是2+22+222+...+222222 ...

  10. Hibernate 命名查询NamedQuery (转)

    转自:http://blog.163.com/ksm19870304@126/blog/static/374552332011993942391/ 配置方式: static List namedQue ...