IOS KVO笔记

来源:互联网 发布:红包神器软件 编辑:程序博客网 时间:2024/06/06 16:45

----------------------------------------------------第一节

KVO的基础,有点类似java中的反射

1.键值编码是一个用于间接访问对象属性的机制,该机制不需要调用存取方法和变量实例就可以访问对象属性

2.键值编码方法在Object-c非正式协议(类目)NSkeyValueConding中被声明,默认的实现方法由NSObject提供

3.键值编码支持带有对象值的属性,同事也支持纯数值类型和结构,费对象参数和返回类型会被自动封装,自动识别


设置和访问:

1.基本使用-valueForKey   拿到某个字段的值,使用这个方法

    -setValue:设置的值是多少  forKey:这个字段的名字

以上两个方法,他们已字符创的形式向对象发送消息,字符创是我们关注属性的关键。如果没有set/get方法,那么就使用KVO的方法

以上方法如果使用的是基本数据类型,需要对基本数据类型进行封装。


2.如果一个变量声明了set/get方法的时候,可以用过点语法去访问,这个变量是private修饰的

3.如果变量声明的public的修饰的时候,那么这个时候可以用过  ->  语法去访问实例里面的值

4.变量声明的时候,最前面带下划线。通过KVO去访问得时候,先根据你的 一个key去查找,如果查找不到,它会加个下划线再去找。

5.除了可以通过键值对方法以外,还可以通过路径去访问。

valueForKeyPath: @"_author._name"  先拿到作者对象,再拿到作者对象的名字

6.一对多关系:可以拿到对象中的数组中的对象的某个属性

vlaueForKeyPath: @"_relative._name"  这个_relative 属性是个数组,并且数组中存储的是对象,可以访问到数组对象中所有的name

7.KVC的简单运算,可以应用一些字符做简单运算 ,sum,min,max,avg,count

valueForKeyPath:@"relative.@sum._price"  按照路径访问,对价格进行总和的进行计算


8.KVO设置基本数据类型的时候,如果进行封装; 能运算的字段必须是数值类型,NSNumbser或者是基本数据类型,计算的结果是NSNumber类型

setValue :[NSNumber numberWithFloat :12.6]  forKey: @“price”  因为要求是个id的类型,就是对象类型的,所以把float使用NsNumbser进行封装


----------------------------------------------------第

1.键值观察室一种使对象获取其它对象的特定属性变化的通知机制:

控制器层的绑定技术是严重依赖键值 观察活的模型层和控制层的变化通知的。对于不依赖控制层类的应用程序,键值观察提供了一种简化的方法来实现检查器并更新用户界面的值

键值观察者接受属性变更通知,观察对象首先必须发送一个assObserver.ForKeyPath:options:context 消息至被观察对象,用一传送观察对象和需要观察的属性关键路径:以便与其注册。

注册监听:addObserver:

触发的方法:observerValueForkey                                                     非正式协议:我们可以去实现,也可以不实现,非必须得协议

0 0