码迷,mamicode.com
首页 > 其他好文 > 详细

KVC/KVO之KVO

时间:2015-09-14 22:31:30      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

本章将分为三个部分:

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

KVO是什么

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

 

KVO有什么用

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

不知道怎么调试,一个同事过来帮忙,使用了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"];
}

 

KVC/KVO之KVO

标签:

原文地址:http://www.cnblogs.com/chenyg32/p/4808246.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!