KVC键值码,KVO键值观察,通知NSNotification

键值码KVC 通过字符串描述来更改对象状态,
          通过指定表示要访问的属性名字的字符串标识符,可以进行类的属性读取和设置
          
           setValue: (设置的值) forKey :(对象属性名或实例变量名称);
           valueForKey: (对象属性名或实例变量名称);

           键搜索顺序
          •setValue:forKey:方法首先查找的是-setKey命名的setter,如果不存在则在对象内部查找_key或key的实例变量
          •valueForKey方法,首先查找的是-key或   -isKey命名的getter,如果不存在,则在对象内部查找_key或key的实例变量
         •注意:使用@property+@synthesize可以自动生成getter和setter,
          但是如果为其指定非标准的getter和setter,key的搜索则会出现问题

           • 键值编码支持指定键路径 ,对于对象中实例变量或属性是另外一对象的情况非常实用
           •使用 -valueForKeyPath: 和  -setValue:forKeyPath 方法来访问键路径

         • 如果对象的某个实例变量为NSArray,而其中存放的又是对象
          •对NSArray请求一个键值,则会查询数组中的每一个对象来查找这个键,然后将这些结果重新打包为一个NSArray
      
          KVC中的运算—集合运算符
          
           
          •处理未定义键
         –取值可以重写对象的valueForUndefinedKey:方法
         –设置值可以重写对象的setValue:forUndefinedKey:方法

        键值观察KVO
               •编写键值观察分为以下三步:
                                   –注册成为观察者
                                   –定义KVO的回调
                                   –移除观察者

               首先调用被观察的对象的 - addObserver:   forKeyPath:   options: context: 方法注册成为观察者
              第一个参数 :常为 self ,接收通知的对象,即观察者
              第二个参数 :键路径参数,要观察的键路径
              第三个参数 :标识 KVO 希望变化如何传递给观察者,可以使用   | 进行多选
                第四个参数 :上下文内存区,通常为 nil
              使用KVO第二步需要编写观察者的回调方法
              结束对一个对象变化的观察后,需要移除观察者,在观察者对象的dealloc方法中调用- removeObserver:  forKeyPath: 方法即可
                  •第一个参数 为移除的观察者对象
                  •第二个参数 为观察的键路径

           •通知
                       •通知是 iOS 开发框架中的一种设计模式,内部的实现机制由 Cocoa 框架支持。
                       •通知一般用于 M V C 之间的信息传递。比如设置页面、设置 App 皮肤。

          • NSNotification
                    •使用通知之前,我们要创建通知对象。 Notification 对象有两个重要的成员变量 : name object 。一般 name 用来唯一标示一个通知对象, object 指通知发送者。
                   • Notification 对象包含一个参数,就是字典(可选参数),这个字典中存储一些传值过程中的信息,供接收者使用。系统要求这个参数是不可变字典。
              eg:  NSNotification  *notification = nil;
                       notification = [ NSNotification notificationWithName: aName
                                                          object: aObj   userInfo: aDictionary];
    通知中心(NSNotificationCenter)
                  •通知创建好后就可以在必要的时候发送通知,发送通知的时候,需要一个控制中心来发送通知,这个控制中心就是通知中心。
                  •通知中心是通知机制架构的大脑。它允许我们注册通知监听者、发送通知、移除通知监听者。
                 •一般系统通知不需要我们发送通知。只需要我们注册通知监听者、 移除通知监听者。比如监听视频是否播放完成。
            •获取通知中心
                        + (NSNotificationCenter *)defaultCenter // 获取通知中心
              •发送通知
                        - (void)postNotification:(NSNotification *)notification   // 发送通知

           •自定义通知
              •自定义通知是指开发人员自己来定义通知。自定义通知的一般步骤:
                •注册监听者
                •创建并发送通知
                •移除监听者

          通知和KVO区别
           KVO只能监听属性的变化,通过NSString类型的属性名来实现。实现了自动监听,但是观察者得持有被观察者得引用,以便被观察者注册观察者,耦合性高,不利用代码de维护
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值