kvc kvo

原创 2015年07月09日 18:14:00
Key-Value Coding (KVC)

KVC,即是指 NSKeyValueCoding,一个非正式的 Protocol,提供一种机制来间接访问对象的属性。KVO 就是基于 KVC 实现的关键技术之一。

一个对象拥有某些属性。比如说,一个 Person 对象有一个 name 和一个 address 属性。以 KVC 说法,Person 对象分别有一个 value 对应他的 name 和 address 的 key。 key 只是一个字符串,它对应的值可以是任意类型的对象。从最基础的层次上看,KVC 有两个方法:一个是设置 key 的值,另一个是获取 key 的值。如下面的例子:
?
1
2
3
4
5
6
7
8
9
10
11
12

void changeName(Person *p, NSString *newName)
{

    // using the KVC accessor (getter) method
    NSString *originalName = [p valueForKey:@"name"];

    // using the KVC  accessor (setter) method.
    [p setValue:newName forKey:@"name"];

    NSLog(@"Changed %@'s name to: %@", originalName, newName);

}

现在,如果 Person 有另外一个 key 配偶(spouse),spouse 的 key 值是另一个 Person 对象,用 KVC 可以这样写:

?
1
2
3
4
5
6
7
8
9
10
11
12
13

void logMarriage(Person *p)
{

    // just using the accessor again, same as example above
    NSString *personsName = [p valueForKey:@"name"];

    // this line is different, because it is using
    // a "key path" instead of a normal "key"
    NSString *spousesName = [p valueForKeyPath:@"spouse.name"];

    NSLog(@"%@ is happily married to %@", personsName, spousesName);

}

key 与 key pat 要区分开来,key 可以从一个对象中获取值,而 key path 可以将多个 key 用点号 “.” 分割连接起来,比如:
[p valueForKeyPath:@"spouse.name"];

相当于这样……
[[p valueForKey:@"spouse"] valueForKey:@"name"];

好了,以上是 KVC 的基本知识,接着看看 KVO。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

KVC,KVO机制

  • 2015-10-27 09:05
  • 34KB
  • 下载

KVO/KVC 实现机理分析

作者:杨登峰 (dengfengyang@gmail.com) 时间:2010-03-12 转帖请注明转之 苹果开发中文网(http://www.CocoaDev.cn) 以上说明是...

MAC下KVO,KVC的小demo

  • 2015-06-23 18:32
  • 48KB
  • 下载

kvo-kvc介绍

  • 2015-11-04 10:13
  • 64KB
  • 下载

KVC和KVO的学习

使用KVC、KVO的优势 通过规定了一组通用的Cocoa命名法则、调用规则等,实现了如下功能:  1)使用一对高度规范化的访问方法,获取以及设置任何对象的任何属性的值。 2)通过继承...

oc中kvc与kvo代码

  • 2015-01-22 10:25
  • 39KB
  • 下载

Objective-C KVC/KVO NSNotification(通知)的简单理解与应用

KVC :Key-Value Coding 键值编码 KVO :Key-Value Observing 键值观察 NSNotificationCenter 通知...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)