关闭

模式 - KVO

170人阅读 评论(0) 收藏 举报
分类:

这里写图片描述

  • 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方法改变属性的值,系统改变属性值不会监听到
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:25822次
    • 积分:902
    • 等级:
    • 排名:千里之外
    • 原创:67篇
    • 转载:4篇
    • 译文:0篇
    • 评论:0条
    文章分类