protocal : 协议,protocal是一种语法,提供统一的接口给遵守协议的类使用。
delegate : 委托,是Coaoa中常用的一种设计模式,把自己的类需要做的一些事情委托给另一个类去做,实际做事的类就是delegate。而要写出delegate这样的东西需要protocal的语法来协助完成。

要写一个委托的模式的步骤:
写一个protocal,指明你需要你的类的delegate去干的事(.h文件)

@protocol MVCDemoViewDelegate <NSObject>
-(void)showModel;
@end

你的类包含一个你的delegate类的弱引用(.h文件)

@interface MVCDemoView : UIView
@property(nonatomic , weak)id<MVCDemoViewDelegate> delegate;
@end

在你的类实现里面在特定的事件发生时让这个delegate去执行你想干的事(.m文件)

- (void)showTheModel
{if ([_delegate respondsToSelector:@selector(showModel)]) {[_delegate showModel];}
}

在使用你的类时,创建你的类的一个对象,并指明对象的delegate是谁(使用类时)
MVCDemoView * view = [[MVCDemoView alloc] init];
view.delegate =  xxx;
这个xxx就很重要了,xxx需要实现你的那个遵守你的MVCDemoViewDelegate协议并实现它的方法。
最后,在你的类showTheModel的时候就会找到它的delegate xxx, 然后,xxx就会执行它实现的MVCDemoViewDelegate协议的方法啦。

上面的完整例子请参阅另外一篇文章《IOS之MVC》中的小例子。

使用委托需要注意的几点
1.协议中的方法默认为required,当你需要说明方法是必须实现的时候使用required,可选的方法时使用optional关键字。这两个关键字的修饰范围是遇到下一个关键字之前;
2.delegate必须为weak,否则A对象有B属性,而B属性的delegate是A时会造成循环引用,造成内存泄露;
3.为了使用delegate模式,消息的发送者必须知道消息的接受者是谁,并把你接受者赋给发送者的delegate属性,而反过来则不需要,接受者只是遵守那样的协议就可以了,松耦合;
4.Cocoa框架中有很多delegate,如UITableViewDelegate,UITexiFieldDelegate,UIAlertViewDelegate。

转载于:https://www.cnblogs.com/xinguan/p/3641620.html

IOS消息机制-委托(ptotocol与delegate)相关推荐

  1. IOS 消息机制(NSNotificationCenter)

    http://blog.csdn.net/wangeen/article/details/38322795 转载于:https://www.cnblogs.com/kinghx/p/5258569.h ...

  2. iOS开发系列--通知与消息机制

    http://www.cocoachina.com/ios/20150318/11364.html 概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣 ...

  3. iOS消息推送机制的实现

    iOS消息推送的工作机制可以简单的用下图来概括: Provider是指某个iPhone软件的Push服务器,APNS是Apple Push Notification Service的缩写,是苹果的服务 ...

  4. IOS开发-通知与消息机制

    在多数移动应用中不论什么时候都仅仅能有一个应用程序处于活跃状态.假设其它应用此刻发生了一些用户感兴趣的那么通过通知机制就能够告诉用户此时发生的事情. iOS中通知机制又叫消息机制,其包含两类:一类是本 ...

  5. ios消息推送机制原理与实现(转)

    今天给无线事业部的同事开发苹果客户端的推送接口.无线事业部就是我们公司专门开发各种终端的app的部门啦! 无线事业部的同事做事还是很体贴的,同时发给了我参考文档地址和需要的开发需要的pl2文件. 提供 ...

  6. 客户端技术:一文带你了解iOS消息推送机制

    导语 | 消息推送我们几乎每天都会用到,但你知道 iOS 中的消息推送是如何实现的吗?本文将从推送权限申请,到本地和远程消息推送,再到 App 对推送消息的处理等多个步骤,详细介绍 iOS 中消息推送 ...

  7. iOS的消息机制和消息转发

    1.消息机制 RunTime简称运行时.就是系统在运行的时候的一些机制,其中最主要的是消息机制. 对于C语言,函数的调用在编译的时候会决定调用哪个函数( C语言的函数调用请看这里 ).编译完成之后直接 ...

  8. NSObject头文件解析 / 消息机制 / Runtime解读 (一)

    NSObject头文件解析 当我们需要自定义类都会创建一个NSObject子类, 比如: #import <Foundation/Foundation.h>@interface Class ...

  9. windows程序消息机制(Winform界面更新有关)--转

    1. Windows程序消息机制 Windows GUI程序是基于消息机制的,有个主线程维护着消息泵.这个消息泵让windows程序生生不息. Windows程序有个消息队列,窗体上的所有消息是这个队 ...

最新文章

  1. (转)软件测试的分类软件测试生命周期
  2. asp.net 检测是否关注公众号_太阳电池缺陷检测方法光致发光检测法
  3. java 方法不同_java同一个类不同方法间的同步
  4. extract local variale 和 jsp中查找选中内容的快捷键
  5. 记一次某APK的恶意WIFI攻击
  6. vant显示日期格式_Vue+Vant ui实现日期时间选择
  7. C#操作Excel(1)Excel对象模型
  8. C++编程笔记:C++用new与不用new创建对象的区别
  9. 自考本科计算机类专业查询,自考本科学位如何查询
  10. 从U盘安装windows/linux操作系统
  11. 通信原理最佳接收-匹配滤波器
  12. linux 网络重组 分片 gso lro
  13. windows邮件绑定谷歌邮箱
  14. 应用Joyoshare VidiKit裁剪视频的小技巧
  15. 7个实用的Python自动化代码,别再重复造轮子了!
  16. FMCW激光雷达科普(上):基本概念、技术路线、优势及争议和误解
  17. 4480: [Jsoi2013]快乐的jyy
  18. AI医学诊断基础-CT扫描、核磁共振成像(MRI)、拍X光、拍胸片、做B超/彩超等常规检查的介绍、原理、医学影像示例(持续跟新和答疑。。。)
  19. ZZULIOJ 1197: 考试排名(一)(结构体专题)
  20. USB-C版3.7V锂电池充电与升压输出电路(5V/1A输出)-充电电源板(附电路图和PCB 抄板直接可用)

热门文章

  1. 【解决方案】win10连接wifi输入密码之后用户就消失了
  2. 算法题:水洼有多少(C++)
  3. 玛塔机器人函数_玛塔创想编程机器人套装包含什么?
  4. Leetcode 刷题笔记
  5. 记录EntityValidationErrors的详细信息
  6. Spring 之常用接口
  7. 前端工程师的修真秘籍(css、javascript和其它)
  8. 基础知识收藏(ASP.NET的OnClientClick与OnClick事件)-2013.07.10
  9. T-Sql 实现类似访问数组变量的操作
  10. 复选框选择变化(可以演化成简单的字符串拼接)