iOSKVC KVO 添加观察者 --销毁的时候要删除观察者

来源:互联网 发布:美妆软件哪个好 编辑:程序博客网 时间:2024/06/15 13:05

#import "Person.h"

#import "Card.h"

@implementation Person

- (void)setCard:(Card *)card

{

   _card=card;

    

    //添加观察者,用来监视余额的变动

    [self.cardaddObserver:selfforKeyPath:@"balance"options:NSKeyValueObservingOptionNewcontext:nil];

    

}

- (void)observeValueForKeyPath:(nullableNSString *)keyPath ofObject:(nullableid)object change:(nullableNSDictionary *)change context:(nullablevoid *)context

{

   if ([keyPath isEqualToString:@"balance"]) {

        

        NSLog(@"balance is changed!余额是多少:%g",self.card.balance);

    }

}

- (void)dealloc

{

    [self.cardremoveObserver:selfforKeyPath:@"balance"];

}




///-----------KVC

//

//  main.m

//  070303kvc

//

//  Created by tianshangrenjian on 15/7/3.

//  Copyright © 2015 tianshangrenjian. All rights reserved.

//


#import <Foundation/Foundation.h>

#import "Person.h"

#import "Car.h"

#import "Card.h"

int main(int argc,const char * argv[]) {

    @autoreleasepool {

        // insert code here...

       Person *p=[[Personalloc] init];

       Car *car=[[Caralloc] init];

        

        p.car=car;

        car.name=@"BWM";

        //KVC 属性赋值  key value coding

        [psetValue:@"fuck"forKey:@"name"];

        [p setValue:@"MG"forKeyPath:@"car.name"];

        

        

       Card *card=[[Cardalloc] init];

        

        p.card=card;

        p.card.balance=10;

        //KVOkey  value  observe (如:银行卡的余额发生变化的时候通知给所有者)

        //分析   人和卡

       NSLog(@"%@:%@",p.name,p.car.name);

    }

   return 0;

}



1 0
原创粉丝点击