KVC&KVO小结

 

使用@property,属性名与实例变量名有时可能不相同,在程序中最好都使用属性操作,这样修改实例变量名时只需要修改实例变量的名称以及@synthesize的名称,在dealloc中这样写self.name = nil;这是最好的写法;

在IOS的开发中,总是关注内存的使用量,不论应用程序运行在何种IOS设备上,出于性能的考虑总是推荐懒加载技术。可以使用代理模式,对开销大的数据实施懒加载,如文件中的大图像文件或者通过低速网络下载大型数据。如果大开销的数据在收到请求之前不需要加载,则可以通过虚拟代理向客户端发送某些轻量的信息。

观察者模式,主要用来降低类之间的耦合性,在Cocoa Touch中两种技术实现了观察者模式:通知和KVO。

通知:使用NSNotification和NSNotificationCenter实现了一对多的发布-订阅模型

KVO键-值观察 键值观察机制由NSObject实现,对象可以通过它得到其他对象特定属性的变更通知

 

KVC

当通过KVC调用对象时,比如:[self valueForKey:@”someKey”]时,程序会自动试图通过几种不同的方式解析这个调用。首先查找是否带有someKey的这个方法;如果没有找到方法,程序会继续查找对象是否带有someKey这个实例变量;如果还没有找到,程序会继续试图调用 -(id) valueForUndefinedKey:这个方法。如果这个方法还是没有被实现的话,程序会抛出一个NSUndefinedKeyException异常错误。

注:Key-Value Coding查找方法的时候,不仅仅会查找someKey这个方法,还会查找getsomeKey这个方法,前面加一个get,或者_someKey以及_getsomeKey这几种形式。同时,查找实例变量的时候也会不仅仅查找someKey这个变量,也会查找_someKey这个变量是否存在。)

 

KVO

Key-Value Observing机制的概述

Key-Value Observing (简写为KVO):当指定的对象的属性被修改了,允许对象接受到通知的机制。每次指定的被观察对象的属性被修改的时候,KVO都会自动的去通知相应的观察者。

示例参考:http://blog.csdn.net/yuquan0821/article/details/6646400

官方文档:

https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html

注意事项:

  • addObserver与removeObserver要一对一对的使用
  • 基本应用就是DataModel的数据改变后,通知View修改界面
  • addObserver:selfforKeyPath:@"price"options:NSKeyValueObservingOptionNewcontext:@"context221"   其中的option设置的是接收到的change的数据类型,context设置的数据是在regist的时候设置的,之后没有其他作用了(可以用来判断接收到的数据的类型)

你可能感兴趣的:(ios,KVO,KVC)