热门IT资讯网

自定义通知

发表于:2024-11-26 作者:热门IT资讯网编辑
编辑最后更新 2024年11月26日,1、获得通知中心对象NSNotificationCenter *center= [NSNotificationCenter defaultCenter]; //单例实际事获得通知中心的地址2、监听通知

1、获得通知中心对象

NSNotificationCenter *center= [NSNotificationCenter defaultCenter]; //单例实际事获得通知中心的地址

2、监听通知

[center addObserver :监听者 selector:须执行的方法 name:所监听者通知的名称 object:通知发送者];

3、通知中心发布消息

[center PostNotificationName:@"为人民服务" object:某人];

4.移除监听中心

[center removeObserver:self name:@"为人民服务" object:某人];

创建King、Worker、Farmer类,由King发一个自定义通知,Worker和Farmer类监听通知,通知内容为打印"某某为人民服务"。

#import

@interface King : NSObject

-(void)senfMessage;//创建并发送通知

@end


#import "King.h"

@implementation King

-(void)senfMessage{

//创建通知对象,通知的名字是MESSAGE

NSNotification *notification = nil;

notification = [NSNotificationnotificationWithName:@"MESSAGE"object:selfuserInfo:nil];

//发送通知

[[NSNotificationCenterdefaultCenter] postNotification:notification];

NSLog(@"我是国王,我正在给我的子民发送通知");

}

@end


#import

@interface Worker : NSObject

@property(retain,nonatomic) NSString *name;

-(void)say:(NSNotification *) notif;//收到通知后要做的事

@end


#import "Worker.h"

@implementation Worker

-(id)init{

if (self = [superinit]) {

//注册监听者

[[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(say:) name:@"MESSAGE"object:nil];

}

returnself;

}

-(void)say:(NSNotification *) notif{//收到通知后要做的事

Worker *wk = [[Workeralloc] init];

wk.name = @"小麦";

NSLog(@"工人%@说我要为人民服务",wk.name);

[wk release];

}

-(void)dealloc{//移除通知

[[NSNotificationCenterdefaultCenter] removeObserver:selfname:@"MESSAGE"object:nil];

[superdealloc];

}

@end


#import

@interface Farmer : NSObject

@property(retain,nonatomic) NSString *name;

-(void)say:(NSNotification *) notif;//收到通知后要做的事

@end


#import "Farmer.h"

@implementation Farmer

-(id)init{

if (self = [superinit]) {

//注册监听者

[[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(say:) name:@"MESSAGE"object:nil];

}

returnself;

}

-(void)say:(NSNotification *) notif{//收到通知后要做的事

Farmer *fa = [[Farmeralloc] init];

fa.name = @"小明";

NSLog(@"农民%@说我要为人民服务",fa.name);

[fa release];

}

-(void)dealloc{//移除通知

[[NSNotificationCenterdefaultCenter] removeObserver:selfname:@"MESSAGE"object:nil];

[superdealloc];

}

@end


#import

#import "King.h"

#import "Worker.h"

#import "Farmer.h"

int main(int argc, constchar * argv[])

{

@autoreleasepool {

//对象初始化

Worker *w = [[Workeralloc]init];

Farmer *f = [[Farmeralloc]init];

King *k = [[Kingalloc]init];

[k senfMessage];//创建并发送通知

[k release];

[w release];

[f release];

}

return 0;

}


0