delegate、notification、KVO场景差别
2024-09-23 09:32:46
delegate:
编译器会给出没有实现代理方法的警告
一对一
使用weak而不是assign,或者vc消失时置为nil
可以传递参数,还可以接收返回值
notification:
编译期无法排错
一对多
恰当时候需要移除注册,否则多次add会造成多次收到消息
可以传递参数,但无返回值、
KVO:
简单的实现两对象间的信息同步
能够对非我们创建的对象,即内部对象的状态改变作出响应,而且不需要改变内部对象(SKD对象)的实现
能够提供观察的属性的最新值以及先前值;
用key paths来观察属性,因此也可以观察嵌套对象
完成了对观察对象的抽象,因为不需要额外的代码来允许观察值能够被观察
我们观察的属性必须使用strings来定义。因此在编译器不会出现警告以及检查
对属性重构将导致我们的观察代码不再可用;
复杂的“IF”语句要求对象正在观察多个值。这是因为所有的观察代码通过一个方法来指向;
当释放观察者时不需要移除观察者。
最新文章
- JS的字符串处理
- 用file上传文件时,浏览器返回值总是自动添加<;pre>;的解决办法
- C# 配置错误定义了重复的“system.web.extensions/scripting/scriptResourceHandler”节
- 本地调试webapi
- [HDOJ5573]Binary Tree(找规律,贪心)
- 【写一个自己的js库】 3.添加几个处理字符串的方法
- 那些年我们写过的三重循环----CodeForces 295B Greg and Graph 重温Floyd算法
- Java面向对象 GUI 补录
- Xposed快速hook关键点
- halcon 模板匹配(最简单)
- js_base_note
- 48-设置tomcat虚拟路径的两种方法(Eclipse、tomcat、IDEA)
- DAY 13 开放封闭原则
- PostgreSQL&;PostGIS完全安装
- C编程技巧资源
- 【Kibana】Kibana入门教程
- Java中3种代理总结(示例代码见之前文章)
- java基础47 装饰着模式设计
- CODEVS 4655 序列终结者-splay(区间更新、区间翻转、区间最值)
- Linux内核同步 - Read/Write spin lock
热门文章
- Linux 线程管理
- JavaOO面向对象中的注意点(三)
- 安装 pywin32-218.win32-py2.7.exe 报错python version 2.7 required,which was not found in the registry解决方案
- [spring源码学习]七、IOC源码-Context
- Greenplum查询计划分析
- iOS 时间的处理
- Canvas 最佳实践(性能篇)
- placeholder js简单实现
- Spring mvc Security安全配置
- python实现最简单的计算器功能源码