当前位置: 首页 > news >正文

kvo实现原理_详细了解Cocoa中KVO机制是什么

详细了解Cocoa中KVO机制是什么是本文要介绍的内容,通过本文你可以方便有很好的去学习cocoa,不多说,我们来看详细内容。

iPhone开发最基本的就是掌握苹果Cocoa这个面向对象开发的基本框架.本文主要简单介绍Cocoa的KVO机制的概念及用法.

问:KVO是一个怎么样的Cocoa机制?

答:Kvo(Key Value Coding)是cocoa中用来设值或取值的协议(NSKeyValueCoding),跟java的ejb有点类似。都是通过对变量和函数名进行规范达到方便设置类成员值的目的.它是Cocoa的一个重要机制,它有点类似于Notification,但是,它提供了观察某一属性变化的方法,而Notification需要一个发送notification的对象,这样KVO就比Notification极大的简化了代码。这种观察-被观察模型适用于这样的情况,比方说根据A(数据类)的某个属性值变化,B(view类)中的某个属性做出相应变化。对于推崇MVC的cocoa而言,kvo应用价值很高。

kvo的使用方法:

1、注册: -(void)addObserver:(NSObject *)anObserver forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(void *)context keyPath就是要观察的属性值,options给你观察键值变化的选择,而context方便传输你需要的数据(注意这是一个void型)

2、实现变化方法:

-(void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context change里存储了一些变化的数据,比如变化前的数据,变化后的数据;如果注册时context不为空,这里context就能接收到。是不是很简单?kvo的逻辑非常清晰,实现步骤简单。

小结:详细了解Cocoa中KVO机制是什么的内容介绍完了,通过本文的学习是不是以及对KVO有了一定的基础了解。好吧!最后希望本文对你有所帮助!

【编辑推荐】

【责任编辑:李程站 TEL:(010)68476606】

点赞 0

相关文章:

  • gitee如何搭建mysql_gitee中项目到运行操作,包括:打包、热部署、数据库操作
  • php mysql 并发写入_php+mysql高并发插入数据重复问题!
  • python pickle模块_python pickle 模块的使用
  • python 曲线拟合参数能否为数组_Python曲线将多个参数拟合到多个数据集
  • plsql trim去不掉空格_Excel中使用TRIM与CALEN都无法清除空格与不可见字符时怎么办...
  • java日历算法分析_Java基础算法分析之一
  • ssh连接docker vscode_VScode远程连接Docker容器实现X11转发
  • linux mysql 最全安装_最全的mysql 5.7.13 安装配置方法图文教程(linux) 强烈推荐!
  • centos7镜像带mysql吗_【系列7】使用Dockerfile创建带mysql的Centos Docker镜像
  • spark mysql 环境搭建_Hive搭建
  • mysql vsftp_vsftp配置验证方式mysql和文件虑拟用户
  • php mysql 连接运算符_php – MINUS运算符在MySQL?
  • centos7.3中安装mysql_CentOS7.3中安装MySQL5.6
  • qstring取前几个_QT中QString 类的使用--获取指定字符位置、截取子字符串等
  • 怎么用yum安装mysql数据库_使用yum如何安装mysql数据库讲析
  • 【刷算法】求1+2+3+...+n
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • 10个最佳ES6特性 ES7与ES8的特性
  • css的样式优先级
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Redux系列x:源码分析
  • Vue ES6 Jade Scss Webpack Gulp
  • 阿里云前端周刊 - 第 26 期
  • 从零开始在ubuntu上搭建node开发环境
  • 翻译:Hystrix - How To Use
  • 构造函数(constructor)与原型链(prototype)关系
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 每天10道Java面试题,跟我走,offer有!
  • 浅谈Golang中select的用法
  • 手写一个CommonJS打包工具(一)
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 物联网链路协议
  • 小李飞刀:SQL题目刷起来!
  • 学习HTTP相关知识笔记
  • zabbix3.2监控linux磁盘IO
  • ​ssh免密码登录设置及问题总结
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #define
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #include到底该写在哪
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • $.proxy和$.extend
  • (3)llvm ir转换过程
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (二)丶RabbitMQ的六大核心
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (五)网络优化与超参数选择--九五小庞
  • (一)基于IDEA的JAVA基础1
  • .NET企业级应用架构设计系列之开场白
  • .NET性能优化(文摘)
  • [ C++ ] STL_list 使用及其模拟实现
  • [04]Web前端进阶—JS伪数组