IPHONE 和 KVC/KVO 监听对象属性变化(例如:获取textView 的text的变化)

本文介绍了KVC(Key-Value Coding)和KVO(Key-Value Observing)在Objective-C中的作用,特别是在监听和响应对象属性变化时的应用。KVO提供了一种观察对象属性变化的机制,简化了代码。KVC则允许通过字符串键来间接访问对象属性。文章强调理解KVC是有效使用KVO的前提,并通过实例展示了如何使用KVC插入和更新数组数据,以避免UITableView不必要的全量刷新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、

在textView的委托法textViewDidChange 只能监听到通过监听到通过键盘输入、删除的内容改变,不能监听到setText,或者myTextView.text=@"Hello",这种内容改变方式,那么如何监听到这种直接赋值引起的 改变呢?这就是下面说的KVC机制。

先给出示例代码:
  //注册监听
  [mTextView addObserver:self forKeyPath:@"text" options:NSKeyValueObservingOptionNew context:nil];
  //处理属性改变事件
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context 
{
    UITextView *mTextView = object;
    NSLog("the textView content is change!!");
}


2、原理介绍(内容拷贝的别人的:http://blog.sina.com.cn/s/blog_489ab04e010160we.html)
对kvo/kvc做了简单的介绍

有些术语描述不够精确请指正。

欢迎讨论。

Kvo是Cocoa的一个重要机制,他提供了观察某一属性变化的方法,极大的简化了代码。这种观察-被观察模型适用于这样的情况,比方说根据A(数据类)的某个属性值变化,B(view类)中的某个属性做出相应变化。对于推崇MVC的cocoa而言,kvo应用的地方非常广泛。(这样的机制听起来类似Notification,但是notification是需要一个发送notification的对象,一般是notificationCenter,来通知观察者。而kvo是直接通知到观察对象。)

适用kvo时,通常遵循如下流程:

1 注册:

 
 
- ( void
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值