参考资料:博客

@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的响应动作的规范。

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

  

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

最新文章

  1. Python之路【第十四篇】前端补充回顾
  2. PC安装了MAC,那么CMD键和OPTION键什么的在哪里?
  3. Java为什么能跨平台运行
  4. centos ssh配置使用
  5. spfa + slf优化
  6. php 二维数组按照某value值求出最大值最小值
  7. objective-c 中数据类型之六 数值类(NSValue)
  8. oracle 时间日期常用语句及函数
  9. Python:Day21
  10. python之旅七【第七篇】面向对象之类成员
  11. 发布Docker 镜像到dockerhub
  12. Golang——垃圾回收GC
  13. 史上最简洁的UITableView Sections 展示包含NSDicionary 的NSArray
  14. 不存数据库生成验证码(totp算法)
  15. e775. 设置JList组件项的维数
  16. I.MX6 计算iomux Pin配置
  17. PHP-redis英文文档
  18. .NET面试题系列(二)GC
  19. svn移动目录时如何保留原来的日志
  20. OpenMPI运行问题:enough slots available in the system

热门文章

  1. linux下的时间及时区设置
  2. ASP.NET MVC 学习之路-5
  3. jquery.session.js使用
  4. Mysql安全机制
  5. 表单提交中get与post的区别
  6. RenderPartial: No overload for method &#39;Write&#39; takes 0 arguments
  7. 《零基础学习Python》01
  8. Oracle 11g R2安装手册(图文教程)For Windows
  9. 倒计时 NAN 问题
  10. iterm快捷键及操作技巧(附Linux快捷键)