zoukankan      html  css  js  c++  java
  • 一天一工程总结系列-7.7-KVOController

    2015
    7,7
    一天一工程总结系列
    对各类优秀工程的剖析和拙见。有些胡言乱语还请作者谅解。

    KVOController

    1结构

    1.1.@interface NSObject (FBKVOController)--可以用这种方式

    1.2.FBKVOController--可以用这种方式

    包括以下类

    @interface _FBKVOInfo : NSObject
    @interface _FBKVOSharedController : NSObject--单例
    @interface FBKVOController : NSObject----三个变量:observer_objectInfosMap_lock

    2.添加观察者的步骤,

      1.创建FBKVOInfo对象,

      2.添加到_objectInfosmap,

      3.[object addObserver:self forKeyPath:info->_keyPath options:info->_options context:(void *)info];

    3.

    4.其他

    4.1instancetype

    KVO的另类解析

    被观察者:A

    观察者:B

    [A addObserver:B forKeyPath:A's成员变量'skeypath options:flag context:NULL];

    B需要实现代理:

    - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {

    1.keyPath ?=A's成员变量'skeypath

       YES    doSomething

       NO     忽略

    触发点:[A setValue: forKeyPath:];

    对被观察者的变量赋值,观察者拿到这个事件,+环境参数,做出观察者的响应。

  • 相关阅读:
    jQuery
    前端开发之JavaScript篇
    前端开发之css篇
    前端开发之html篇
    mysql续
    MySQL入门
    进程线程协程那些事儿
    Python之socket网络编程
    2016.6.24——vector<vector<int>>【Binary Tree Level Order Traversal】
    2016.6.21——Climbing Stairs
  • 原文地址:https://www.cnblogs.com/so-magic/p/4628495.html
Copyright © 2011-2022 走看看