美文网首页
KVO - NSKeyValueObserving

KVO - NSKeyValueObserving

作者: BabyNeedCare | 来源:发表于2018-11-12 10:43 被阅读0次

KVO:

三个步骤:

1. 注册监听

2. 使用回调,对监听对象处理

3. 移除监听

// 使用UITextField 的 text 属性,示例。self.testField = [[UITextFieldalloc] initWithFrame:CGRectMake(0,100,CGRectGetWidth(self.view.bounds),40)];self.testField.backgroundColor = [UIColoryellowColor]; [self.view addSubview:self.testField];// 需要监听的对象 add 观察者 forkey 观察属性 描述内容[self.testField addObserver:selfforKeyPath:@"text"options:(NSKeyValueObservingOptionOld|NSKeyValueObservingOptionNew) context:@"输入框的 输入控制"];

4种Option:

NSKeyValueObservingOptionNew=0x01, 新值

NSKeyValueObservingOptionOld=0x02, 旧值

NSKeyValueObservingOptionInitial=0x04, 初始化的值? 

NSKeyValueObservingOptionPrior=0x082次回调,变化前后。

// 当监听对象key 的属性值,变化时,就会有这个回调。

- (void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void*)context{if([keyPath isEqualToString:@"text"]) {NSString*oldStr = change[NSKeyValueChangeOldKey];NSString*newStr = change[NSKeyValueChangeNewKey];if(newStr.length ==0) {NSLog(@"输入长度不能为0"); }elseif(newStr.length >8) {NSLog(@"输入长度不能大于8"); }else{NSLog(@"cool : %@ 变为 %@",oldStr,newStr); } }}

此处获取变化值时,使用的是对于的 key

FOUNDATION_EXPORTNSString*constNSKeyValueChangeNewKey;FOUNDATION_EXPORTNSString*constNSKeyValueChangeOldKey;FOUNDATION_EXPORTNSString*constNSKeyValueChangeNotificationIsPriorKey; 是否优先回调key。使用NSKeyValueObservingOptionPrior时 ,2次回调,第一次返回值1.FOUNDATION_EXPORTNSString*constNSKeyValueChangeKindKey;FOUNDATION_EXPORTNSString*constNSKeyValueChangeIndexesKey;

// 注意不要重复移除。注册-移除 一对一。

[self.testField removeObserver:selfforKeyPath:@"text"];

相关文章

  • NSKeyValueObserving(KVO)

    KVO简介: NSKeyValuesObserving(KVO)非正式协议定义了一种机制,允许一个对象被通知:另外...

  • KVO - NSKeyValueObserving

    简述:在KVC 的基础上,对属性值的监听。注意KVC的使用。 一般类的 KVO 主要分为三个步骤 1 注册监听: ...

  • KVO - NSKeyValueObserving

    KVO: 三个步骤: 1. 注册监听 2. 使用回调,对监听对象处理 3. 移除监听 // 使用UITextFie...

  • iOS 关于KVO的一些总结

    本文参考链接: iOS KVO详解 Foundation: NSKeyValueObserving(KVO) KV...

  • iOS中KVO

    KVO(Key Value Observing,即键值监听) KVO机制NSKeyValueObserving协议...

  • KVO---NSKeyValueObserving

    The NSKeyValueObserving (KVO) informal protocol[非正式协议] de...

  • KVO详解及底层实现

    什么是KVO?? KVO就是NSKeyValueObserving,请看官方文档的解释: 大概翻译如下: 简单理解...

  • 深入理解一手KVO

    Key-Value Observing : 键值监听 KVO则必须实现NSKeyValueObServing协议,...

  • iOS-KVO(键值监听)

    KVO全称为Key Value Observing,键值监听机制,由NSKeyValueObserving协议提供...

  • iOS KVO

    KVO全称为Key Value Observing,键值监听机制. 由NSKeyValueObserving协议提...

网友评论

      本文标题:KVO - NSKeyValueObserving

      本文链接:https://www.haomeiwen.com/subject/buuqfqtx.html