模式 - KVO

原创 2015年07月09日 21:45:24

这里写图片描述

  • KVO: Key Value Observing
  • 常用作用:监听模型属性值的改变
- (void)viewDidLoad{
    self.p1 = [[WQPerson alloc] init];
    self.p1.name = @"oldName";
    // 利用KVO时刻监听mainV的frame属性
    // Observer:观察者 谁想监听
    // KeyPath:监听对象调用者的属性
    // options:监听新值的改变
    [self.p1 addObserver:self forKeyPath:@"name" options: NSKeyValueObservingOptionOld context:nil];
    // setter方法修改属性的值
    self.p1.name = @"newName";
}

#pragma mark - KVO监听方法
/**
 * 只要监听的属性一改变,就会调用观察者的这个方法,通知你有新值
 */
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    NSLog(@"监听到%@对象的%@属性发生了改变, %@", object, keyPath, change);
}

- (void)dealloc
{
    [self.p1 removeObserver:self forKeyPath:@"name"];
}
  • 有时监听不到,原因必须是通过setter或getter方法改变属性的值,系统改变属性值不会监听到

delegate,notification,KVO三种模式实现通信的优缺点

在开发ios应用的时候,我们会经常遇到一个常见的问题:在不过分耦合的前提下,controllers间怎么进行通信。在IOS应用不断的出现三种模式来实现这种通信: 1.委托delegation; ...
  • qq_33351410
  • qq_33351410
  • 2016年09月16日 10:07
  • 387

【iOS】KVC 和 KVO 的使用场景

Key Value Coding Key Value Coding是cocoa的一个标准组成部分,它能让我们可以通过name(key)的方式访问property, 不必调用明确的property...
  • chenglibin1988
  • chenglibin1988
  • 2014年07月29日 10:25
  • 26076

KVO与通知的区别

KVO提供一种机制,当指定的被观察的对像的属性被修改后,KVO会自动通知响应的观察者,KVC(键值编码)是KVO的基础 通知:是一种广播机制,在实践发生的时候,通过通知中心对象,一个对象能够为所有关...
  • anywhereIOS
  • anywhereIOS
  • 2016年03月10日 10:56
  • 3532

KVO的几个坑

# KVO的几个坑 昨天同事看一个很普通的bug,viewControllerA和B存在同样一个播放记录列表,在viewControllerA push到B后 对B中的列表进行增删改操作后pop...
  • Ray_L_IOS
  • Ray_L_IOS
  • 2016年01月19日 13:07
  • 716

【IOS学习】KVO的使用,demo

KVO nsobject类实现NSKeyValueCoding / NSKeyValueObserving非正式协议 本质上定义了一套让我们去遵守和实现的方法 KVO的使用...
  • mangosnow
  • mangosnow
  • 2014年07月03日 13:14
  • 3820

Objective-C之KVO(键值监听)

一,KVO的定义 KVO(Key-Value Observing),俗称键值监听。它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,K...
  • LXL_815520
  • LXL_815520
  • 2016年04月14日 20:07
  • 9029

解析KVO实现原理

研究KVO的时候我们发现系统使用Objective-C 强大的runtime功能实现了这个功能。属性类class中并没有实现KVO通知的相关方案,而是在调用addObserver之后定义属性类的子类s...
  • dufeat
  • dufeat
  • 2014年03月27日 13:26
  • 2293

使用Block实现KVO

在iOS开发中,我们可以通过KVO机制来监听某个对象的某个属性的变化。用过KVO的同学都应该知道,KVO的回调是以代理的形式实现的:在给某个对象添加观察以后,需要在另外一个地方实现回调代理方法。这种设...
  • apple890111
  • apple890111
  • 2017年05月15日 08:56
  • 2182

KVO 正确使用姿势进阶及底层实现

你要知道的KVC、KVO、Delegate、Notification都在这里转载请注明出处 http://www.jianshu.com/p/d3bfa1e9fa0a本系列文章主要通过讲解KVC、KV...
  • u014205968
  • u014205968
  • 2017年10月13日 13:13
  • 110

KVO底层实现--写一个自己的KVO

KVO底层原理   Person * p =[[Person alloc] init]; [p addObserver:self forKeyPath:@"age" options:...
  • petyou123
  • petyou123
  • 2016年05月27日 14:42
  • 315
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:模式 - KVO
举报原因:
原因补充:

(最多只允许输入30个字)