博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Delegate in Cocoa
阅读量:6002 次
发布时间:2019-06-20

本文共 1229 字,大约阅读时间需要 4 分钟。

Delegate模式并没有标准定义,也没有标准行为,所以在不同的地方使用的方式也不一样,C#中Delegate就是一个方法,而Cocoa中Delegate是一个对象(或者说adopt了某个protocol的对象),下面的一句话描述还比较贴切:

A delegate is an object that’s given an opportunity to react to changes in another object or influence the behavior of another object.

It stores a reference to another object, its delegate, and sends messages to the delegate at critical times.The messages may just inform the delegate that something has happened, giving the delegate an opportunity to do extra processing, or the messages may ask the delegate for critical information that will control what happens.The delegate is typically a unique custom object within the Controller subsystem of your application.

很多Cocoa的类都支持Delegate模式,当然,每个类支持的Delegate需要adopt不同的protocol。比如NSWindow的Delegate需要adopt NSWindowDelegate;NSApplication的delegate需要adopt NSApplicationDelegate;

如何使用Delegate?

delegate的设置可以在IB中完成,也可以通过编程的方式完成。如果是在IB中完成,delegate就只能是custom object或者controller等其他存储在XIB中的对象;如果通过编程的方式实现,就没有这个限制了,只要能拿到这个对象的id,就可以作为delegate使用。

 

其他Delegate的例子:

NSTableView的delegate需要adopt NSTableViewDelegate;

NSTableView的dataSource(NSTableView的另外一个delegate)需要adopt NSTableViewDataSource protocol;

 

转载于:https://www.cnblogs.com/whyandinside/archive/2013/03/19/2969828.html

你可能感兴趣的文章
2016年4月7日
查看>>
Ansible核心技术
查看>>
nagios监控iptables状态(二)
查看>>
SpringData+Redis存储
查看>>
C#中用SharpZipLib生成gzip/解压文件
查看>>
JSON Tips
查看>>
Visual Studio 2013 配置OpenGL环境变量
查看>>
iOS开发网络篇之文件下载、大文件下载、断点下载
查看>>
Haproxy安装部署
查看>>
Sublime Text 3 插入日期时间等
查看>>
the usage of activity_main.xml
查看>>
db2 sync主从配置参数
查看>>
使用pushmebaby测试app的远程推送功能
查看>>
第四章 字符串和字符
查看>>
给普通用户root权限
查看>>
悼念 Aaron Swartz
查看>>
支配值数目-------2012年12月25日
查看>>
Appium参考文档
查看>>
CAS 实现站内单点登录及实现第三方 OAuth、OpenId 登录(一)
查看>>
linux命令大杂烩
查看>>