码迷,mamicode.com
首页 > 其他好文 > 详细

通知的使用

时间:2014-10-27 23:07:59      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:通知

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];
    
}


通知的使用

标签:通知

原文地址:http://blog.csdn.net/pengyuan_d/article/details/40515547

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!