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教学质量监控问卷调查系统设计与实现
下一篇:没有了

android移动护士站的设计+源代码+答辩PPT

Android考勤系统移动端的设计+源代码

SSM框架移动乐豆游戏下载系统设计+源代码

基于iOS平台的健身APP的设计+源代码

HTML5的移动端家政服务平台设计+源代码

Android移动智慧校园的设计与开发

电子商务中的移动支付安全问题研究

AT89C51单片机温度控制系统的设计+电路图+程序

刘亮程散文集《风中的院...

磁悬浮系统的模糊控制器设计

浅析古诗词意境美对新闻美感的影响

现茬的年轻人都茬干什么...

硝普钠浸种对渗透胁迫下...

浅析建筑工程预算茬工程...

企业员工工作倦怠调查问卷表

镁铝合金异种金属焊接的研究现状

稀土/TPU纳米复合材料的合成与表征