zoukankan      html  css  js  c++  java
  • KVO 键值观察者

    KVO(键值观察者)

    //监听的创建

    -(id)initChildren:(Person *)person

    {

        self = [super init];

        if (self != nil) {

            //拥有所有权,防止被自动释放

           // _person = [person retain];

            self.person = _person;

            

            [_person addObserver:self forKeyPath:@"happyVal" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:@"xxx"];

            

            

        }

        return self;

        

    }

    //移除监听器

    -(void)dealloc

    {

        [_person removeObserver:self forKeyPath:@"happyVal"];

        [_person release];

     

        [super dealloc];

    }

    //监听变化,显示变化

    - (void)observeValueForKeyPath:(NSString *)keyPath

                          ofObject:(id)object

                            change:(NSDictionary *)change

                           context:(void *)context

    {

        NSLog(@"change :%@",change);

    }

    //监听要改变的对象 ,  self.改变的对象名  或则是 kvc(注意点这两边的key记得要一致) 定义 不能使用 _对象名直接改变对象值,这这样KVO是没有办法监听它变化的

     

     

    //通知

    //发出通知

    [NSNotificationCenter defaultCenter]postNotificationName:定义的通知名 object:要发送的对象

     

    //接收通知

    [NSNotificationCenter  defaultCenter]addObserver:self selector:@selector:(action:) name:这是定义的通知方式名 object:nil];

    -(void) action:(NSNotification *)notification{

    }

  • 相关阅读:
    序列化二叉树
    把二叉树打印成多行
    按之字形顺序打印二叉树
    对称的二叉树
    二叉树的下一个节点
    java ee项目用gradle依赖打包
    spring cloud gateway 拦截request Body
    oauth2学习
    docker 应用
    gradle spring 配置解释
  • 原文地址:https://www.cnblogs.com/meixian/p/5370952.html
Copyright © 2011-2022 走看看