iOS NSNotification通知和KVC KVO 的一些用法

一,NSNotification   通知一般分三步完成

首先 注册通知

          ,1注册通知[NSNotificationCenter defaultCenter ] addObserver :self
 
aelector:@selector(stop: ) name:@"cccc"object
:nil
];

 addObserver: 观察者,即在什么地方接收通知;

        selector: 收到通知后调用何种方法,后面可带参数,也就是可以用通知传值;

        name: 通知的名字,也是通知的唯一标示,编译器就通过这个找到通知的。

2发送通知[NSNotificationCenterdefaultCenter] postNotificationName:@ccccobject,sss];

第一个参数 通知的名字,也是通知的唯一标识,编译器就是通过这个找到通知的

第二个参数 通知传的值

3 执行通知的方法,当然也可以获得通知所传得值.

-      (void)stop(NSNotification*)aNSNotification

-      {

-      id object = [aNSNotification     object];

-      }


附,通知一般全局调用,在页面间传值.

二 KVO

 //KVO键值观察,作用提供了一种监控属性值改变,设计模式(观察者模式)
    Book * myBook = [[Book alloc] init];
    //第一个参数是观察者,他需要重写观察方法
    //第二个参数:被观察者的路径
    //第三个参数:
    //NSKeyValueObservingOptionNew当修改属性值的时候,调用观察方法.
    //NSKeyValueObservingOptionOld,当属性值被修改前,调用观察方法;
    //NSKeyValueObservingOptionInitial 当属性被第一次赋值,调用观察方法;
    //NSKeyValueObservingOptionPrior ,提供布尔值,来区别修改前和修改后
    //第四个参数,内容参数(一般用作区别不同对象);

    [myBook addObserver:self forKeyPath:@"name" options: NSKeyValueObservingOptionPrior context:"123"];

myBook.name = @"ios";//属性初始化

//项目盲点(添加观察者一定要记得释放)

 [myBook removeObserver:self forKeyPath:@"name"];

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
   // NSLog(@"keyPath:%@",keyPath);
   // NSLog(@"object:%@",object);
    NSLog(@"change:%@",change);
   // NSLog(@"context:%@",context);
    //change中的notificationIsPrior:代表修改前和修改后

    if ([[change valueForKey:@"notificationIsPrior"] boolValue])
    {
        NSLog(@"修改前");
        NSLog(@"old:%@",[change valueForKey:@"old"]);
    }
    
    else
    {
        NSLog(@"修改后");
        NSLog(@"old:%@",[change valueForKey:@"old"]);
        NSLog(@"new:%@",[change valueForKey:@"new"]);
    }
}

//KVC :key-value coding (键值编码);ios中的一种设计模式和设计原理.作用是提供了一种见解访问属性的方法.
//  直接访问

个人感觉KVC就是一种打酱油的模式,









 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值