自定义通知的一般步骤:
1.注册监听者
2.创建并发送通知
3.移除监听者
创建一个King ,Worker ,Farmer类,有King发送一个自定义通知,Worker和Farmer类监听通知,通知内容"给老百姓发福利,涨工资"
#import <Foundation/Foundation.h>
@interface King : NSObject
-(void)sendMessage;//创建并发送通知
@end
#import "King.h"
@implementation King
//创建并发送通知,通知的名字是 "MESSAGE"
-(void)sendMessage
{
//创建并发送通知
[[NSNotificationCenter defaultCenter] postNotificationName: @"MESSAGE" object:self userInfo:@{@"order":@"给来百姓发福利,涨工资"}];
}
#import <Foundation/Foundation.h>
@interface Worker : NSObject
@end
#import "Worker.h"
@implementation Worker
-(id)init
{
if (self = [super init])
{
//注册监听者
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(say:) name:@"MESSAGE" object:nil];
}
return self;
}
//接收通知要做的事情
-(void)say:(NSNotification *)notificotion
{
NSDictionary *dictionary = notificotion.userInfo;
NSLog(@"工人说%@",dictionary[@"order"]);//注意:dictionary[@"order"]
}
//移除通知
-(void)dealloc
{
[[NSNotificationCenter defaultCenter ] removeObserver:self name:@"MESSAGE" object:nil];
}
@end
#import <Foundation/Foundation.h>
@interface Farmer : NSObject
@end
#import "Farmer.h"
@implementation Farmer
-(id)init
{
//注册监听者
if (self = [super init])
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(say:) name:@"MESSAGE" object:nil];
}
return self;
}
-(void)say:(NSNotification *)notification
{
NSDictionary *dictionary = notification.userInfo;
NSLog(@"农民说%@",dictionary[@"order"]);
}
-(void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"MSEEAGE" object:nil];
}
@end
#import "ViewController.h"
#import "King.h"
#import "Worker.h"
#import "Farmer.h"
@interface ViewController ()
{
Worker *worker;
Farmer *farmer;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
King *king = [King new];
worker = [Worker new];
farmer = [Farmer new];
[king sendMessage];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
//打印结果:
2015-12-20 11:30:02.803 copy-oc-08-03-01[1101:43851] 工人说给来百姓发福利,涨工资
2015-12-20 11:30:02.804 copy-oc-08-03-01[1101:43851] 农民说给来百姓发福利,涨工资