addObserver:forKeyPath:options:context: Registers anObserver to receive KVO notifications

1.比如我们想要监听一个对象属性值 totalDuration  的变化

@interface TimerModel : NSObject

@property(assign,nonatomic)float totalDuration;  

+(TimerModel *)shareTimerManager;

@end

@implementation TimerModel




static TimerModel *shareTimerModel=nil;


+(TimerModel *)shareTimerManager

{

    static dispatch_once_t once;

    dispatch_once(&once,^{

        shareTimerModel=[[self alloc]init];

    });

    return shareTimerModel;

}

@end


2.在你想要监听该属性的地方 Registers anObserver

    [[TimerModel shareTimerManager] addObserver:self forKeyPath:@"totalDuration" options:NSKeyValueObservingOptionNew context:nil];

3.当监听的属性值发生变化时

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context

{

  //这里面写 totalDuration变化时你想要执行的方法

}

4.最重要的一步在self对象释放的时候,移除监听

-(void)dealloc

{

    //把注册的监听移除

    [[TimerModel shareTimerManager] removeObserver:self forKeyPath:@"totalDuration"];

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值