Objective-C虽然存在很多看似令人费解的写法,但是实际上Objective-C是一门非常优雅的语言。在拥有C/C++语言的基础上,通过一周的学习以及适应,就可以掌握这一门语言。

2。1。1 Objective-C 观察者模式简介文献综述

KVO是Objective-C实现观察者模式的一种方法,KVO的实现依赖于Objective-C强大的Runtime。

KVO提供了一系列方法,当程序指定了一个被观察对象以后,当这个对象的某一个属性发生改变的时候(一定是对象属性的指针地址发生了改变),对象会得到通知,并且执行相应的函数。而且程序中不需要给被观察对象额外增添代码,使用KVO就能简单的实现观察者模式。

采用MVC设计架构的项目,KVO机制能够轻松的实现模型Mode和视图View之间的通讯,并且不需要额外的代码。

2。1。2 观察者模式实现原理

Apple 使用了 isa 混写(isa-swizzling)来实现 KVO 。当观察的对象为A对象时,KVO机制能够动态的创建出一个新的类: NSKVONotifying_A的新类,该类继承自对象A的本类,且KVO为NSKVONotifying_A重写观察属性的setter 方法,新的setter方法会在原setter方法调用之前之后,通知所有观察对象属性的值更改(需要指针地址发生改变)的情况。

NSKVONotifying_A类剖析:在这个过程中,被观察对象的isa指针从A类指向了系统新创建的NSKVONotifying_A,这样便可以实现监听A类属性值的改变,从而在属性值改变时通知被观察对象,并且执行相应的方法。

所以我们在使用KVO机制的时候,更本不会想到系统会动态的创建新的类,系统依赖Objective-C强大的Runtime机制,隐瞒了KVO底层实现的过程,将创建的新的类隐藏了起来,当我们创建一个名为NSKVONotifying_A的类的时候,运行到注册KVO代码的时候,系统就会崩溃,原因就是NSKVONotifying_A的类名称已经被占用,系统无法在动态的创建名为NSKVONotifying_A的类。

上一篇:PHP+MYSQL教学质量监控问卷调查系统设计与实现
下一篇:C#教学网站的设计与实现

Android全国天气移动终端应用程序设计研究

java景点移动导游系统设计与实现

Android基于地理位置LBS移动急救系统设计

基于iOS的图书馆公共设施分配软件设计

移动安防系统Android客户端的设计与实现

java+mysql移动医生系统设计与实现服务端设计

基于移动终端的智能监控系统的APP开发

浅谈动画短片《天降好运》中的剧本创作

小学《道德与法治》学习心得体会

弹道修正弹实测弹道气象数据使用方法研究

紫陵阁

人事管理系统开题报告

组态王文献综述

大学生就业方向与专业关系的研究

林业机械作业中的安全性问题【2230字】

淮安市老漂族心理与休闲体育现状的研究

适合宝妈开的实体店,适...