首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Objective-C KVO/KVC 淺析:鍵值觀察與編碼實戰指南

     編輯:關於C語言

KVC(Key-Value Coding)

鍵值編碼允許通過字符串鍵名間接訪問對象屬性,打破靜態編譯限制,實現動態屬性存取。核心方法:

  • valueForKey: 獲取值
  • setValue:forKey: 設置值

KVO(Key-Value Observing)

提供屬性變更通知機制,實現 Model 與 Controller/View 解耦。Controller 觀察 Model 屬性,屬性變更自動觸發回調。

實戰流程

  1. 註冊觀察者:
    [model addObserver:self
           forKeyPath:@"score"
              options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld
              context:nil];
  2. 觸發變更(必須通過 KVC 方式):
    [model setValue:@(newScore) forKey:@"score"];
  3. 接收回調:
    - (void)observeValueForKeyPath:(NSString *)keyPath
                          ofObject:(id)object
                            change:(NSDictionary *)change
                           context:(void *)context {
        if ([keyPath isEqualToString:@"score"]) {
            // 更新 UI
        }
    }
  4. 移除觀察者(通常在 dealloc 中):
    [model removeObserver:self forKeyPath:@"score"];

注意事項

  • 只能通過 KVC 設置值(setValue:forKey:)觸發 KVO,直接賦值(model.score = 10)或訪問實例變量不會觸發。
  • 觀察者需實現 observeValueForKeyPath:ofObject:change:context:。
  • options 決定 change 字典包含新值、舊值、索引、類型等信息。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved