`

KVC/KVO 监听对象属性变化

 
阅读更多
http://blog.csdn.net/a6472953/article/details/7817538
http://www.cnblogs.com/pengyingh/articles/2383629.html
http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html#//apple_ref/doc/uid/10000177i

  //注册监听
  [mTextView addObserver:self forKeyPath:@"text" options:NSKeyValueObservingOptionNew context:nil];
  //处理属性改变事件
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context 
{
    UITextView *mTextView = object;
    NSLog("the textView content is change!!");
}




-------------------------------
cocoa的KVO模型中,有两种通知观察者的方式,自动通知和手动通知。
自动通知由cocoa在属性值变化时自动通知观察者,
手动通知需要在值变化时调用 willChangeValueForKey:和didChangeValueForKey:
通知调用者。为求简便,我们一般使用自动通知。

要使用手动通知,需要在 automaticallyNotifiesObserversForKey方法中明确告诉cocoa,哪些键值要使用自动通知:


//重新实现NSObject类中的automaticallyNotifiesObserversForKey:方法,返回yes表示自动通知。  
+ (BOOL)automaticallyNotifiesObserversForKey:(NSString*)key  
{  
    //当这两个值改变时,使用自动通知已注册过的观察者,观察者需要实现observeValueForKeyPath:ofObject:change:context:方法  
    if ([key isEqualToString:@"isFinished"])  
    {  
        return NO;  
    }  
    return [super automaticallyNotifiesObserversForKey:key];  
} 


手动通知在需要改变值_isFinished变量的地方,使用
[self willChangeValueForKey:@"isFinished"]; 
finished = YES;
[self didChangeValueForKey:@"isFinished"]; 
分享到:
评论

相关推荐

    iOS KVO 监听frame

    在iOS开发中,Key-Value Observing(KVO)是一种强大的机制,允许对象监听其他对象属性的变化。在标题“iOS KVO 监听frame”中,我们关注的是如何使用KVO来跟踪和响应UI控件(如UIView)的frame属性变化。这在布局...

    IOS KVC和KVO

    KVC和KVO是Objective-C及Swift中用于对象属性间接访问和观察的重要技术,它们为开发者提供了灵活的数据绑定和动态属性更新机制。在iOS开发中,尤其是在MVVM(Model-View-ViewModel)架构中,这两项技术的应用尤为...

    KVC_KVO_Demo

    总之,KVC和KVO是Objective-C中的重要特性,它们提供了一种动态访问和监听对象属性的方式,使得代码更加灵活和可扩展。通过深入理解和实践KVC_KVO_Test项目,初学者能够更好地掌握这些技术,并将其应用于实际的iOS...

    IOS中KVC和KVO用法demo

    在iOS开发中,Key Value Coding (KVC) 和 Key Value Observing (KVO) 是两种强大的数据处理技术,它们提供了一种间接访问对象属性的方法,以及动态监控属性变化的能力。 KVC,全称Key Value Coding,是Objective-C...

    iOS中KVC-KVO例子

    KVC提供了一种间接访问对象属性的方式,而KVO则允许我们监听并响应某个对象属性值的变化。 ### Key-Value Coding (KVC) KVC是一种非侵入性的方法,通过键(key)来间接访问对象的属性,即使这些属性没有公开的...

    KVO-KVC-demo

    **KVC (Key-Value Coding)** 和 **KVO (Key-Value Observing)** 是Objective-C中的两种重要特性,它们在iOS和Mac OS X开发中被广泛用于对象属性的动态访问和观察。在这个“KVC-KVO-demo”项目中,我们可以深入理解这...

    KVC和KVO实例

    在Swift编程中,KVC(Key-Value Coding)和KVO(Key-Value Observing)是两种用于对象属性间接访问和动态变化监听的技术。这两种机制是Objective-C中的特性,但Swift也提供了支持,使得开发者可以更灵活地处理数据...

    swift-KVC与KVO使用姿势和原理解析

    Swift中的Key-Value Coding(KVC)和Key-Value Observing(KVO)是两种强大的数据绑定技术,它们允许程序员间接访问对象的属性并监听这些属性的变化。在本文中,我们将深入探讨这两种技术的使用方法、工作原理以及...

    oc中的通知,kvc,kvo

    - **定义**:KVO是一种观察对象属性变化的技术,当被观察的属性改变时,会自动调用观察者的回调方法。 - **注册观察**:使用`-[NSObject addObserver:forKeyPath:options:context:]`方法添加观察者。 - **监听回...

    ios中整理别人的KVC与KVO代码

    KVC是Objective-C提供的一种间接访问对象属性的机制,允许开发者通过键(key)来获取或设置对象的属性,而无需知道具体的setter和getter方法。这种技术特别适用于动态属性或者不希望直接暴露属性名的情况。 1. **...

    KVC KVO的使用方法

    KVO则是基于KVC实现的,允许你监听对象属性的变化。当你注册一个对象并观察其特定属性时,当该属性改变时,系统会自动调用观察者的回调方法。例如: ```objc [human addObserver:self forKeyPath:@"age" options:...

    KVC_KVOTest Demo代码

    **KVO (Key-Value Observing)** 是Objective-C的另一个强大特性,允许对象监听其他对象属性的变化。当被观察的属性值发生变化时,KVO会自动调用观察者的回调方法。这在实现数据绑定、响应式编程或者需要在属性改变时...

    Swift5.2 KVO监听

    Swift5.2中的Key-Value Observing(KVO)是一种观察者模式的实现,它允许一个对象监听并响应另一个对象的属性变化。在iOS、macOS等Apple平台的开发中,KVO是一种强大的机制,可以帮助我们实现数据绑定和动态更新视图...

    KVO-KVC.zip_DEMO_kvo demo

    **KVO(Key-Value Observing)与KVC(Key-Value Coding)是Objective-C中的两种重要编程概念,主要用于对象属性的监听与间接访问。在这个DEMO中,我们将深入探讨这两种技术的工作原理、应用场景以及如何在实践中使用...

    kvo-kvc介绍

    KVC是一种间接访问对象属性的机制,通过字符串键(key)来操作对象的值(value)。它提供了灵活的数据访问方式,特别是在处理动态属性或者需要批量操作属性时非常有用。 **KVC的常用方法:** 1. **获取值**:`-...

    KVO-KVC-Advance

    比如在上述例子中,通过KVC可能实现了动态地修改数组,然后利用KVO监听这个修改,当数组内容变化时,自动更新UI。这种组合使用能实现强大的数据驱动和响应式编程。 总结来说,KVO和KVC是Objective-C中实现数据绑定...

    iOS KVC实现原理

    KVO(Key-Value Observing)是基于KVC的,允许对象监听并响应其他对象的属性变化。当一个对象注册为另一个对象的观察者时,一旦被观察对象的某个属性值发生变化,KVO会自动调用观察者的回调方法。 ### 5. 注意事项 ...

    KVO_App:iOS Objective-C中KVC和KVO的基本实现

    总结来说,KVC和KVO是Objective-C中强大的工具,它们简化了对象属性的访问和变化检测,使得数据绑定和响应式编程变得更加容易。理解并熟练运用这两项技术,能极大地提高iOS应用的可维护性和灵活性。

    iOS 中KVC、KVO、NSNotification、delegate 总结及区别

    - KVO是观察者模式的实现,用于监听对象属性变化并作出响应。 - NSNotification是全局的通知机制,适用于广播消息和事件传播。 - Delegate是对象间的一对一通信方式,主要用于事件处理和控制流。 在选择使用哪种...

Global site tag (gtag.js) - Google Analytics