KVO vs NSNotification vs protocol/delegates?

Ank*_*ava 34 iphone protocols key-value-observing nsnotifications ios

虽然我有一些想法可以使用,但确切的用法仍然不清楚.有人能解释一下......?谢谢.

dea*_*rne 39

如果您只想与一个对象交谈,请使用委托.例如,tableView有一个委托 - 只有一个对象应该负责处理它.

如果您想告诉每个人发生了什么事情,请使用通知.例如,在内存不足的情况下,会发送通知,告知您的应用程序存在内存警告.由于您应用中的大量对象可能希望降低其内存使用量,因此这是一个通知.

我认为KVO根本不是一个好主意,并且尽量不使用它但是,如果你想知道一个属性是否已经改变,你可以听取改变.

希望有所帮助.

PS 这总结了我认为KVO被打破的原因

  • 我知道这是旧的,但我仍然不同意它:)这篇文章提出了很好的观点.为什么KVO API被打破了,但它也准确地说它仍然是一个强大的工具.在很多情况下,它可以节省大量丑陋的代码.如果你愿意,可以像他提供的包装一样使用它,但要使用它. (4认同)
  • @deanWombourne从未说过NSNotifications不是异步的.它只是下一个事件循环.链接 - https://developer.apple.com/library/ios/documentation/General/Conceptual/DevPedia-CocoaCore/KVO.html - > ...而不是向已注册的所有对象广播通知的中心对象作为观察者,当发生属性值的变化时,KVO通知直接进入观察对象. (2认同)

jba*_*100 14

当存在"主/从"关系时(委托知道类和类知道委托),使用委托,一个类在控制层次结构的上方,当很明显不存在其他情况时元素(主要是UI)将有兴趣知道课程的内容.当班级不知道谁听谁以及他们听多少时,使用通知,任何人和任何号码都可以注册通知.KVO对于"没有上课知道"是有用的,虽然当然不是这种情况,但是应用KVO的课程不需要改变.


归档时间:

查看次数:

20122 次

最近记录:

5 年,11 月 前