KVC 和 KVO

一、KVC (Key-Value Coding) 键值编码

1.1 基本概念

KVC 是一种通过字符串键名间接访问对象属性的机制,而不是通过调用访问器方法。

1.2 核心方法

objectivec 复制代码
objective-c

// 设置值
- (void)setValue:(id)value forKey:(NSString *)key;
- (void)setValue:(id)value forKeyPath:(NSString *)keyPath;

// 获取值
- (id)valueForKey:(NSString *)key;
- (id)valueForKeyPath:(NSString *)keyPath;

二、KVO (Key-Value Observing) 键值观察

2.1 基本概念

KVO 允许对象监听另一个对象属性的变化,实现观察者模式。

2.2 基本使用

objectivec 复制代码
objective-c

// 1. 注册观察者
- (void)addObserver:(NSObject *)observer 
         forKeyPath:(NSString *)keyPath 
            options:(NSKeyValueObservingOptions)options 
            context:(void *)context;

// 2. 实现观察方法
- (void)observeValueForKeyPath:(NSString *)keyPath 
                      ofObject:(id)object 
                        change:(NSDictionary<NSKeyValueChangeKey,id> *)change 
                       context:(void *)context;

// 3. 移除观察者
- (void)removeObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath;

总结

KVC 和 KVO 是 iOS 开发中强大的工具,但需要谨慎使用:

KVC 适用场景:

  • 动态访问属性

  • 字典与模型转换

  • 使用集合运算符进行数据聚合

KVO 适用场景:

  • 模型到视图的数据绑定

  • 观察配置变化

  • 监听对象状态改变

注意事项:

  1. 总是成对使用 add/remove Observer

  2. 注意线程安全问题

  3. 避免过度使用,考虑性能影响

  4. 在 Swift 中使用时注意 @objc dynamic 标记

相关推荐
_瑞11 小时前
AI Coding 那么快,为什么还需要 SDD?
人工智能·ios·ai编程
轩辕十四leo11 小时前
Astrolabe(星盘):让 AI 看见自己写出的 UI
ios·ai编程
白玉cfc13 小时前
熟悉Objective-C
开发语言·ios·objective-c
星辰即远方1 天前
字符串合法性检验
macos·ios·cocoa
末代iOS程序员华仔1 天前
KMP全栈开发:从Android到AI Agent的技术演进与实践
flutter·ios·figma
2501_916008891 天前
苹果上架工具怎么选 不用 Mac 上架 App Store 的几种方案
android·macos·ios·小程序·uni-app·iphone·webview
鹤卿1231 天前
谓词与正则表达式(OC)
ios·正则表达式·objective-c·xcode
秋雨梧桐叶落莳1 天前
iOS——3GShare项目总结
学习·macos·ios·objective-c·cocoa
AIsoft_86882 天前
iOS端录音转文字工具实测:自媒体创作者高效整理指南
ios·媒体
库奇噜啦呼2 天前
【iOS】Core Data
ios