• kvo-观察者-iOS


    #import <Foundation/Foundation.h>
    
    @interface Child : NSObject
    @property (nonatomic,assign) int age;
    -(id) initWithAge:(int) age;
    @end
    
    #import "Child.h"
    
    @implementation Child
    -(id) initWithAge:(int) age{
        self=[super init];
        if(self!=nil){
            _age=age;
        }
        return self;
    }
    @end
    
    #import <Foundation/Foundation.h>
    @class Child;
    @interface Nurse : NSObject
    @property Child *child;
    -(id)initWithChild:(Child *) child;
    -(void) observeChild;
    -(void) removeObserver;
    @end
    
    #import "Nurse.h"
    #import "Child.h"
    
    
    @implementation Nurse
    #import "Child.h"
    -(id)initWithChild:(Child *) child{
        self=[super init];
        if(self!=nil){
            _child=child;
    //         [_child addObserver:self forKeyPath:@"age" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:@"孩子长大一岁了"];
        }
        return self;
    }
    
    -(void) observeChild{
        [_child addObserver:self forKeyPath:@"age" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];
            NSLog(@"观察者创建好了");
    }
    
    -(void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
        NSLog(@"孩子现在的年龄:%@",[change objectForKey:@"new"]);
    }
    
    -(void) removeObserver{
    [_child removeObserver:self forKeyPath:@"age"];
         NSLog(@"观察者移除掉了");
    }
    
    @end
    
        //kvo--观察者
            Child *child=[[Child alloc] initWithAge:23];
            Nurse *nurse=[[Nurse alloc] initWithChild:child];
            [nurse observeChild];
            [child setAge:24];
            [child setAge:25];
            [nurse removeObserver];
    
  • 相关阅读:
    《认知突围》摘抄
    《java多线程编程核心技术》----ThreadLocal
    java有必要记录的东西
    spring源码几个servlet功能的介绍
    基于openapi3.0的yaml文件生成java代码的一次实践
    Android攻城狮 调试
    Android攻城狮 http协议
    Android攻城狮 Android中更新UI的几种方式
    Android攻城狮 Handler与子线程
    Android攻城狮Handler简介
  • 原文地址:https://www.cnblogs.com/clarence/p/3917632.html
Copyright © 2020-2023  润新知