zoukankan      html  css  js  c++  java
  • KVC/KVO之KVO

    本章将分为三个部分:

    • KVO是什么
    • KVO有什么用
    • KVO例子

    KVO是什么

    KVO,即NSKeyValueObserving,一个非正式的Protocol,提供一种机制来间接观察其他对象属性的变化。

    KVO有什么用

    前几天遇到一个问题,TableView的一个Cell中有一个继承自UIScrollView的横滑控件,横滑该控件,再滑动TableView直到该Cell滚出屏幕,再滚回来,发现横滑控件又回到了起始位置。

    不知道怎么调试,Jack过来帮忙,使用了KVO,观察横滑控件的contentOffset,在监听函数里打断点就可以知道在哪里修改了横滑控件的contentOffset。这种调试技巧实在强大,学习了!

    KVO例子

    添加观察对象 

    [_gridView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];

    实现监听方法

    - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
    {
        if ([keyPath isEqualToString:@"contentOffset"])
        {
            NSLog(@"%@", change);
        }
    }

    因为我们在添加观察对象时options填的是NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld,所以change打印出来的是

    {

      kind = 1;

        new = "NSPoint: {682.5, 0}";

        old = "NSPoint: {677, 0}";

    }

    移除监听对象

    - (void)dealloc
    {
        [_gridView removeObserver:self forKeyPath:@"contentOffset"];
    }
  • 相关阅读:
    ActionContext和ServletActionContext
    1.有Dao为什么还要Service?
    1.DBCP和CP30的区别
    设计模式之单例模式(java实现)
    DOM之练习2
    js之DOM练习题
    动态改变dom结构常用方法
    js 自动类型转换
    定位属性position
    html基础
  • 原文地址:https://www.cnblogs.com/chenyg32/p/4808246.html
Copyright © 2011-2022 走看看