【API使用系列】KVO/KVC专题

1 开发技巧

1.1 常见问题

1.1.1 kvo通知没有发出来问题

KVO通知发起机制:

       KVO中属性变化后,通知的发出是在属性的setter方法中发起的,所以属性赋值时,一定要用.操作符或者用方法调用,而不能直接用内部成员赋值的方法。

WS(weakSelf);

[HJComInstance getEntity:_entity WithUserEntity:userEntity WithCompleteBlock:^(HJResultData*reData){

    HJPreEntity*preEntity;

            if (reData.errCode == HJCode_Success) {

                preEntity = reData.resultData;

            }

            if(preEntity) {

                weakSelf.preType = HJPreType_Done;

                //不会发出kvo通知

                _preType = HJPreType_Done;

            }

}];


通知接收逻辑:

//添加对praiseType属性的监听

[self.mEntity addObserver:self forKeyPath:@"preType" options:NSKeyValueObservingOptionNew context:nil];

#pragma mark 重写observeValueForKeyPath方法,当属性变化后此处获得通知

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

    if([keyPath isEqualToString:@"preType"]){、

        if (object == _mEntity) {

            [self loadSubViews];

        }

    }

}


- (void)dealloc

{

    [self.mEntity removeObserver: self forKeyPath:@"preType"];

}


2 参考链接

iOS开发系列--Objective-C之KVC、KVO

http://www.cnblogs.com/kenshincui/p/3871178.html

KVOController

https://github.com/facebook/KVOController

iOS:KVO的概述与使用

http://blog.youkuaiyun.com/yuquan0821/article/details/6646400

[深入浅出Cocoa]详解键值观察(KVO)及其实现机理

http://blog.youkuaiyun.com/kesalin/article/details/8194240

Key-value observing:官方文档

Key-Value

Observing Done Right:官方 KVO 实现的缺陷

MAKVONotificationCenter:一个改良的Notification 实现,托管在 GitHub 上

Friday Q&A 2009-01-23

深入浅出Cocoa 之动态创建类

深入浅出Cocoa之类与对象


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江中散人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值