关键技术汇总

一、关于观察者模式,NSNotification/KVC/KVO机制:

http://www.cnblogs.com/pengyingh/articles/2383629.html

http://www.cppblog.com/kesalin/archive/2012/11/17/kvo.html

KVC/KVO原理详解及编程指南:   http://www.tuicool.com/articles/M7vQRj

这些文章介绍的很清楚了。

key-value observing,顾名思义,键值观察机制。key-value,对象的属性值。如果希望在A对象的x属性的值发生改变时,能够通知到B对象,使其作出相应的行为。那么就可以使用kvo机制,添加B对象为A对象的观察者。而B对象需要实现一个函数-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context,在里面实现收到通知后的行为。例如在主界面view展示一个不断变化的值。

KVO (Key Value Observing)是ios里面一种特别方便的机制用于“捕捉”对象属性的变化。在概念理解上,是设计模式里面观察者模式的一种实践。

1、KVC简介

全称是Key-value coding,翻译成键值编码。顾名思义,在某种程度上跟map的关系匪浅。它提供了一种使用字符串而不是访问器方法去访问一个对象实例变量的机制。

2、KVO简介

全称是Key-value observing,翻译成键值观察。提供了一种当其它对象属性被修改的时候能通知当前对象的机制。再MVC大行其道的Cocoa中,KVO机制很适合实现model和controller类之间的通讯。


拿一个具体的例子来讲:

有一个数据对象EmployeeData,该对象有一个属性salary

有一个ViewController 用于显示对象EmployeeData的属性salary的值

当salary的值发生变化的时候,ViewController如何显示变化后的新值。

方案一:

    “可以在EmployeeData类弱引用ViewController类,然后在EmployeeData数据发生变化时,调

    用ViewController类的回调函数。这个方法虽然能达到目的,但是会破坏EmployeeData的完整

    性,一个负责数据管理的类,不应当依赖另一个负责视图控制的类;换句话说,EmployeeData

    类不应该知道关于ViewController类的任何事情,甚至不需要知道其从在”

方案二:

使用ios提供的消息中心(NSNotificationCenter)。在此EmployeeData为消息生产者,ViewController为消息消费者。当salary数据发生变化时发送一个消息既可。

ViewController接收到salary数据变化的通知做相对应的业务处理。不足之处如同方案一,EmployeeData对象的salary每次变动都需要发送“通知”。这项工作对EmployeeData自身来讲毫无意义。

方案三:

在ViewController中将自身(self)设置为EmployeeData salary属性值变化的观察者。当salary值发生变化时,执行一个回调方法。这样对“EmployeeData”来讲不用关心除自身业务以

外的事情。避免了方案一和方案二的瑕疵。对ViewController来讲关注谁的变化,注册自己为其的观察者既可。间接轻便。


二、正式协议/非正式协议:

http://blog.csdn.net/ajrm0925/article/details/7419043

三、NSInteger和NSNumber:

http://blog.csdn.net/wzzvictory/article/details/8614433

四、ARC

http://blog.csdn.net/q199109106q/article/details/8565561

五、GCD

gcd 详解 http://blog.csdn.net/totogo2010/article/details/8016129

ios 6.0和mac os 10.8以上,GCD内存管理纳入ARC的管理范围,所以部署版本高于ios 6.0和mac os 10.8,则不需要dispatch_release()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值