zoukankan      html  css  js  c++  java
  • iOS设计模式和机制之观察者模式

    观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。

    观察者模式的思想:当某对象改变时,观察者会自动通知所有相关的状态进行更新

    iOS中观察者模式实现:有四种方法,NSNotification、KVO、Protocol 以及 Code Block代码块

    重点:

      *Notification是一对多的,而delegate回调是一对一的

      *Notification - NotificationCenter 机制使用了操作系统的对象间通讯功能,而delegate是直接的函数调用。Notification跨度大,而delegate效率可能比较高。

      *相对于前两者KVO才是一种真正的观察者模式,他允许你将一个处理函数绑定到某个类的属性,属性发生改变时就会自动触发,不像其他两种需要你手动的发通知。KVO是一种灵活的观察机制,广泛应用于界面设计。

      *Code Bolock其实就相当于C的函数指针,可以用来做各种回调。我觉得其应当具备最高的效率。使用Code Block要注意的地方就是使用外部变量。在block里直接引用外部变量的话会在block定义的时候复制外部变量的一个拷贝,也就是说得到的是block定义时的值,在block内修改这个值也不会传给外部。要得到实时的数据,或者将数据传出的话需要在相关变量前面加__block即可。

  • 相关阅读:
    了解运行时类型信息(RTTI)
    linux培训笔记1
    Delphi 的各种错误信息(中英文)
    delphi XML 原来可以玩接口
    wxWidgets初学者导引(2)——下载、安装wxWidgets
    Delphi中ADO异步执行方式
    模态运行EXE程序
    window.setTimeout()函数的使用
    应用程序的关闭退出(在FMX中,Activity替代了Form的概念)
    Dll方式的线程,需要引用这个
  • 原文地址:https://www.cnblogs.com/chenbowen/p/6033569.html
Copyright © 2011-2022 走看看