// KVC: Key Value Coding, 常见作用:给模型属性赋值
    // KVO: Key Value Observing, 常用作用:监听模型属性值的改变

 //
// ViewController.m
// 11-通知、KVO、代理
//
// Created by xiaomage on 15/6/6.
// Copyright (c) 2015年 xiaomage. All rights reserved.
// #import "ViewController.h"
#import "XMGPerson.h" @interface ViewController ()
@property (nonatomic, strong) XMGPerson *p1;
@property (nonatomic, strong) XMGPerson *p2;
@property (nonatomic, strong) XMGPerson *p3;
@end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; // self.p1 = [[XMGPerson alloc] init];
// self.p1.name = @"p1";
//
// self.p2 = [[XMGPerson alloc] init];
// self.p2.name = @"p2";
//
// self.p3 = [[XMGPerson alloc] init];
// self.p3.name = @"p3";
// 同一个通知TestNotification可以被多个对象person监听
// 当收到TestNotification通知就调用self.p1的test方法
// [[NSNotificationCenter defaultCenter] addObserver:self.p1 selector:@selector(test) name:@"TestNotification" object:nil];
// [[NSNotificationCenter defaultCenter] addObserver:self.p2 selector:@selector(test) name:@"TestNotification" object:nil];
// [[NSNotificationCenter defaultCenter] addObserver:self.p3 selector:@selector(test) name:@"TestNotification" object:nil];
// 多个对象可以发出同一个通知
//对象@“123”发出TestNotification通知
// [[NSNotificationCenter defaultCenter] postNotificationName:@"TestNotification" object:@"123"];
// [[NSNotificationCenter defaultCenter] postNotificationName:@"TestNotification" object:@"345"]; // KVC: Key Value Coding, 常见作用:给模型属性赋值
// KVO: Key Value Observing, 常用作用:监听模型属性值的改变 self.p1 = [[XMGPerson alloc] init];
self.p1.name = @"p1";
//self.p1 监听属性 name的改变,NSKeyValueObservingOptionOld表示监听方法中的NSDictional显示旧值
[self.p1 addObserver:self forKeyPath:@"name" options: NSKeyValueObservingOptionOld context:nil]; self.p1.name = @"pppp1";
}
//所有的通知监听 都要在dealloc销毁时removeObserver
- (void)dealloc
{
[self.p1 removeObserver:self forKeyPath:@"name"];
} #pragma mark - KVO监听方法
/**
* 当监听到object的keyPath属性发生了改变
*这个方法是NSObject的类扩展方法,用来监听对象属性改变
*keyPath属性名称如name
*id 对象 如self.p1
*change 记录改变前后的值
*/
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
NSLog(@"监听到%@对象的%@属性发生了改变, %@", object, keyPath, change);
} @end

ios通知-kvo的更多相关文章

  1. IOS中KVO模式的解析与应用

    IOS中KVO模式的解析与应用 最近老翁在项目中多处用到了KVO,深感这种模式的好处.现总结如下: 一.概述 KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修 ...

  2. iOS通知的整理笔记

    iOS通知用于高耦合界面的传值确实方便快捷. 需要实现模态弹出的视图控制器上,有一个视图控制器可以导航.这必定要将这个视图控制器的导航视图控制器naVC.view添加到模态弹出的视图控制器presen ...

  3. iOS下KVO使用过程中的陷阱 (转发)

    iOS下KVO使用过程中的陷阱   KVO,全称为Key-Value Observing,是iOS中的一种设计模式,用于检测对象的某些属性的实时变化情况并作出响应.网上广为流传普及的一个例子是利用KV ...

  4. iOS 通知的变化ios9-10,新功能展示

    二.新功能展示 1  使用 /iOS通知新功能玩法 2.  全面   iOS10里的通知与推送详情 一.变化 四.Notification(通知) 自从Notification被引入之后,苹果就不断的 ...

  5. iOS通知中心

    iOS通知中心 它是iOS程序内部的一种消息广播机制,通过它,可以实现无引用关系的对象之间的通信.通知中心他是基于观察者模式,它只能进行程序内部通信,不能跨应用程序进程通信. 当通知中心接受到消息后会 ...

  6. delphi IOS 通知 TNotification

    delphi  IOS 通知 TNotification http://blogs.embarcadero.com/ao/2013/05/01/39450 TNotification http://d ...

  7. iOS 通知观察者的被调函数不一定运行在主线程

    Tony in iOS | 08/08/2013 iOS 通知观察者的被调函数不一定运行在主线程 今天修复Bug时候发现的一个小细节,记录下. 问题描述 事情是这样的:我在A视图(UITableVie ...

  8. iOS 通知扩展插件

    iOS 通知扩展插件 目录 iOS 通知扩展插件 Notification Service Extension 新建一个target 代码实现 注意事项 UINotificationConentExt ...

  9. iOS通知的使用

    注册:[[NSNotificationCenter defaultCenter] postNotificationName:@"changeColor" object:self]; ...

随机推荐

  1. 根据Excel列类型获取列的值

    using System.Data; using System.IO; using System.Text; using System.Web; using NPOI.SS.UserModel; us ...

  2. mysql 交叉表

    交叉表,但在MySQL中却没有这个功能,但网上看到有不少朋友想找出一个解决方法,特发贴集思广义.http://topic.csdn.net/u/20090530/23/0b782674-4b0b-4c ...

  3. NGINX(三)HASH表

    前言 nginx的hash表有几种不同的种类, 不过都是以ngx_hash_t为基础的, ngx_hash_t是最普通的hash表, 冲突采用的是链地址法, 不过这里冲突的元素不是一个链表, 而是一个 ...

  4. HDU 5534 Partial Tree 完全背包

    一棵树一共有2*(n-1)度,现在的任务就是将这些度分配到n个节点,使这n个节点的权值和最大. 思路:因为这是一棵树,所以每个节点的度数都是大于1的,所以事先给每个节点分配一度,答案 ans=f[1] ...

  5. Linux shell 获取当前时间之前N天

    date +%Y%m%d --date '2 days ago' 更多资料关注:www.kootest.com ;技术交流群:182526995

  6. 【原】Storm 守护线程容错机制

    Storm入门教程 1. Storm基础 Storm Storm主要特点 Storm基本概念 Storm调度器 Storm配置 Guaranteeing Message Processing(消息处理 ...

  7. oracle表分析

    analyze table tablename compute statistics; analyze index indexname compute statistics; 对于使用CBO很有好处, ...

  8. JSF2.0 タグ一覧 (h:panelGrid) 編

    JSF の HTML (UIComponent) 系タグにはテーブルを作成するタグが2種類用意されています.これらのタグと固有機能系タグを組み合わせることでテーブルを使用した画面を作成可能です. 6. ...

  9. prefuse学习(一)用非数据库连接和xml的方式读入数据

    prefuse正常的数据源需要从ConnectionFactory中生产出来,但是如果平时不想用里面给的方法得到数据,就需要手动创造Graph里面所需要的内容两个Table 下面是我自己写的从文件中读 ...

  10. localtime()方法的疑惑

    在做一个时间管理的APP中遇到一些问题 windows linux mac下time.h中都有关于localtime()的定义. 它不是一个保险可靠的方法,使用的时候需要小心. 参考 http://b ...