【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.csdn.net/yuquan0821/article/details/6646400

[深入淺出Cocoa]詳解鍵值觀察(KVO)及其實現機理

http://blog.csdn.net/kesalin/article/details/8194240

Key-value observing:官方文檔

Key-Value

Observing Done Right:官方 KVO 實現的缺陷

MAKVONotificationCenter:一個改良的Notification 實現,託管在 GitHub 上

Friday Q&A 2009-01-23

深入淺出Cocoa 之動態創建類

深入淺出Cocoa之類與對象


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章