通知的使用
时间:2014-10-27 23:07:59
收藏:0
阅读:201
Main.m
#import "Children.h"
#import "Nurse.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
Children *children = [[Children alloc] init];
Nurse *nurse = [[Nurse alloc] initWithChildren:children];
[[NSRunLoop currentRunLoop] run];
[children release];
[nurse release];
}
return 0;
}
Children.h
@interface Children : NSObject @property(nonatomic,assign)NSInteger happyValue; //欢乐值 @property(nonatomic,assign)NSInteger hungryValue; //饥饿值
Children.m
- (id)init {
self = [super init];
if (self) {
//开启定时器
[NSTimer scheduledTimerWithTimeInterval:1
target:self
selector:@selector(timeAction:)
userInfo:nil
repeats:YES];
_hungryValue = 100;
_happyValue = 100;
}
return self;
}
- (void)timeAction:(NSTimer *)time {
--_hungryValue;
--_happyValue;
NSLog(@"happyValue:%ld",_happyValue);
if (_happyValue < 90) {
//通知保姆
//发送一个通知,通知名:happlyValueNotification
[[NSNotificationCenter defaultCenter] postNotificationName:@"happlyValueNotification" object:self];
}
NSLog(@"hungryValue:%ld",_hungryValue);
if (_hungryValue < 85) {
//发送通知
[[NSNotificationCenter defaultCenter] postNotificationName:@"hungryValueNotification" object:self];
}
}
Nurse.h
@class Children;
@interface Nurse : NSObject {
Children *_children;
}
- (id)initWithChildren:(Children *)children;
Nurse.m
#import "Children.h"
@implementation Nurse
- (id)initWithChildren:(Children *)children {
self = [super init];
if (self) {
_children = [children retain];
//接收通知,通知名:happlyValueNotification
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(happlyValueChange)
name:@"happlyValueNotification"
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(hungryValueChange:) name:@"hungryValueNotification" object:nil];
}
return self;
}
- (void)happlyValueChange {
[self play];
}
- (void)hungryValueChange:(NSNotification *)notification {
[self feed];
}
- (void)play {
NSLog(@"保姆陪小孩玩耍");
_children.happyValue = 100;
}
- (void)feed {
NSLog(@"保姆给小孩晚饭");
_children.hungryValue = 100;
}
- (void)dealloc {
//移除通知
// [[NSNotificationCenter defaultCenter] removeObserver:self name:@"happlyValueNotification" object:nil];
// [[NSNotificationCenter defaultCenter] removeObserver:self name:@"hungryValueNotification" object:nil];
//移除所有通知
[[NSNotificationCenter defaultCenter] removeObserver:self];
[_children release];
[super dealloc];
}
评论(0)