🚩 | 问题

NotificationCenter、KVC、KVO、Delegate

📌 | 解答

  • NotificationCenter

    是一种通知中心,可以在一处发出通知,同时在N多处地方来接收通知,接收过通知后需要在dealloc中释放通知,否则会出现莫名其妙的错误

      /**
       *  发通知
       */
      [[NSNotificationCenter defaultCenter] postNotificationName:@"" object:nil userInfo:nil];
      /**
       *  用来接收通知
       *
       *  @param path 接收通知后执行的方法
       */
      [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(path) name:@"" object:nil];
    
      /**
       *  移除通知
       */
      [[NSNotificationCenter defaultCenter] removeObserver:self];
    
  • KVC

    是一种键值编码,主要由NSKeyValueCoding协议提供,而NSObject就实现了这个协议,也就是说NSObjC中几乎所有的对象都支持KVC操作,常用的KVC操作方法如下:

    动态设置:

      setValue:属性值 forKey:属性名(用于简单路径)、setValue:属性值 forKeyPath:属性路径(用于复合路径,例如Person有一个Account类型的属性,那么person.account就是一个复合属性)
    

    动态读取:

    valueForKey:属性名 、valueForKeyPath:属性名(用于复合路径)
    
  • KVO

    键值监听,KVO其实是一种观察者模式;
    常用的方法:

    注册指定Key路径的监听器: addObserver: forKeyPath: options:  context:
    删除指定Key路径的监听器: removeObserver: forKeyPath、removeObserver: forKeyPath: context:
    回调监听: observeValueForKeyPath: ofObject: change: context:
    
  • Delegate

    代理设计模式:是一种用通俗的话来讲就是我完成不了的事情扔给别人来完成,但是别人必须遵守我的协议才行。举个例子就是说我口渴了,想喝冰红茶;但是我不高兴去买,用手机外卖软件让人来帮我买一瓶(他就是我的代理了);但是呢,我得冰红茶必须是冰冻的(这就是协议);

results matching ""

    No results matching ""