#import <Foundation/Foundation.h>

@interface Child : NSObject
@property (nonatomic,assign) int age;
-(id) initWithAge:(int) age;
@end
#import "Child.h"

@implementation Child
-(id) initWithAge:(int) age{
self=[super init];
if(self!=nil){
_age=age;
}
return self;
}
@end
#import <Foundation/Foundation.h>
@class Child;
@interface Nurse : NSObject
@property Child *child;
-(id)initWithChild:(Child *) child;
-(void) observeChild;
-(void) removeObserver;
@end
#import "Nurse.h"
#import "Child.h" @implementation Nurse
#import "Child.h"
-(id)initWithChild:(Child *) child{
self=[super init];
if(self!=nil){
_child=child;
// [_child addObserver:self forKeyPath:@"age" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:@"孩子长大一岁了"];
}
return self;
} -(void) observeChild{
[_child addObserver:self forKeyPath:@"age" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];
NSLog(@"观察者创建好了");
} -(void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
NSLog(@"孩子现在的年龄:%@",[change objectForKey:@"new"]);
} -(void) removeObserver{
[_child removeObserver:self forKeyPath:@"age"];
NSLog(@"观察者移除掉了");
} @end
    //kvo--观察者
Child *child=[[Child alloc] initWithAge:23];
Nurse *nurse=[[Nurse alloc] initWithChild:child];
[nurse observeChild];
[child setAge:24];
[child setAge:25];
[nurse removeObserver];

kvo-观察者-iOS的更多相关文章

  1. ios - kvo观察者示例

    首先创建Person分类 #import <Foundation/Foundation.h> @interface Person : NSObject @property (nonatom ...

  2. iOS 自动移除KVO观察者

    对NSObject写一个分类: #import <Foundation/Foundation.h> @interface NSObject (FMObserverHelper) - (vo ...

  3. iOS: 消息通信中的Notification&KVO

    iOS: 消息通信中的Notification&KVO 在 iOS: MVC 中,我贴了张经典图: 其中的Model向Controller通信的Noification&KVO为何物呢? ...

  4. IOS学习之初识KVO

    什么是KVO? KVO(Key-Value Observing)键值观察,是一种通过对对象的某一个属性添加观察者,一旦这个属性值发生变化,就会通知当前观察者的一种机制. 该如何使用? 1.注册,指定被 ...

  5. iOS 之单例,代理,通知,KVO,Block全能解析

    //单例 //.h + (Instannce *)shareInstance; //.m static Instannce *instance = nil; @implementation Insta ...

  6. iOS中关于KVC与KVO知识点

    iOS中关于KVC与KVO知识点 iOS中关于KVC与KVO知识点  一.简介 KVC/KVO是观察者模式的一种实现,在Cocoa中是以被万物之源NSObject类实现的NSKeyValueCodin ...

  7. iOS KVO & KVC

    键值观察:值更改时通知观察者 键值观察(Key-value observing,或简称 KVO)允许对象观察另一个对象的属性.该属性值改变时,会通知观察对象.它了解新值以及旧值:如果观察的属性为对多的 ...

  8. 【iOS 开发】Objective - C 面向对象 - 方法 | 成员变量 | 隐藏封装 | KVC | KVO | 初始化 | 多态

    一. Objective-C 方法详解 1. 方法属性 (1) OC 方法传参机制 Object-C 方法传参机制 : OC 中得参数传递都是值传递, 传入参数的是参数的副本; -- 基本类型 (值传 ...

  9. ios专题 - 常用设计模式

    设计模式:解决编程问题的设计模板 设计模式是一个抽象工具,用于面向对象的软件开发,以及其他领域.它是一个设计模板,在特定背景中,解决一般性的.重复出 现的问题.因此,设计模式是一种针对特定的.具体的设 ...

  10. iOS 关于NSNotificationCenter

    通常我们在 iOS 中发生什么事件时该做什么是由 Delegate 实现的,  Apple 还为我们提供了另一种通知响应方式,那就是 NSNotification. NSNotificationCen ...

随机推荐

  1. maven学习之二M2_HOME简介

    在<maven学习之一>中介绍了M2_HOME指向了maven的安装目录,如下图: weiwan..................

  2. javascript splice

    //arrayObject.splice(index,howmany,element1,.....,elementX)//index 必需.规定从何处添加/删除元素.(0)//howmany 必需.规 ...

  3. (spring-第16回【AOP基础篇】)基本概念

    AOP(Aspect Oriented Programing),面向切面方程.介绍具体定义前,先看一个例子: package com.baobaotao.concept; public class F ...

  4. Reachability判断网络是否连接

    类似于一个网络状况的探针. [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(reachabili ...

  5. JQuery源码分析(五)

    分离构造器 通过new 操作符构建一个对象,一般经过四部:   A.创建一个新对象   B.将构造函数的作用域赋给新对象(所以this就指向了这个新对象)   C.执行构造函数中的代码   D.返回这 ...

  6. postfix之dovecot

    dovecot-1.0.rc14安装 注:我的系统是RHEL4一.RPM格式1.安装RPM包:2.编辑/etc/dovecot.conf其中,修改protocols = imap pop3 passd ...

  7. 利用WPF绘图

    C#入门经典 25章的一个例子,利用WPF绘图. XAML: <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/p ...

  8. C#使用Fixed创建固定大小的缓冲区

    在 C# 中,可以使用 fixed 语句在数据结构中创建带有固定大小数组的缓冲区. 使用现有代码(如使用其他语言.预先存在的 DLL 或 COM 项目编写的代码)时,这种方法非常有用. 固定数组可采用 ...

  9. EditText 控件

    <EditText android:layout_width="fill_parent" android:layout_height="wrap_content&q ...

  10. 实例讲解Oracle数据库设置默认表空间问题

    实例讲解Oracle数据库设置默认表空间问题   实例讲解Oracle数据库设置默认表空间问题,阅读实例讲解Oracle数据库设置默认表空间问题,DBA们经常会遇到一个这样令人头疼的问题:不知道谁在O ...