溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

自定義通知

發(fā)布時(shí)間:2020-04-10 00:26:13 來源:網(wǎng)絡(luò) 閱讀:296 作者:江城子Dj 欄目:開發(fā)技術(shù)

1、獲得通知中心對(duì)象

NSNotificationCenter  *center= [NSNotificationCenter defaultCenter];  //單例實(shí)際事獲得通知中心的地址

2、監(jiān)聽通知

[center addObserver :監(jiān)聽者 selector:須執(zhí)行的方法 name:所監(jiān)聽者通知的名稱 object:通知發(fā)送者];

3、通知中心發(fā)布消息

[center PostNotificationName:@"為人民服務(wù)" object:某人];

4.移除監(jiān)聽中心

[center removeObserver:self name:@"為人民服務(wù)" object:某人];

創(chuàng)建King、Worker、Farmer類,由King發(fā)一個(gè)自定義通知,Worker和Farmer類監(jiān)聽通知,通知內(nèi)容為打印“某某為人民服務(wù)”。

#import <Foundation/Foundation.h>

@interface King : NSObject

-(void)senfMessage;//創(chuàng)建并發(fā)送通知

@end


#import "King.h"

@implementation King

-(void)senfMessage{

//創(chuàng)建通知對(duì)象,通知的名字是MESSAGE

NSNotification *notification = nil;

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

//發(fā)送通知

   [[NSNotificationCenterdefaultCenter] postNotification:notification];

NSLog(@"我是國(guó)王,我正在給我的子民發(fā)送通知");

}

@end


#import <Foundation/Foundation.h>

@interface Worker : NSObject

@property(retain,nonatomic) NSString *name;

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

@end


#import "Worker.h"

@implementation Worker

-(id)init{

if (self = [superinit]) {

//注冊(cè)監(jiān)聽者

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

       }

returnself;

}

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

Worker *wk = [[Workeralloc] init];

   wk.name = @"小麥";

NSLog(@"工人%@說我要為人民服務(wù)",wk.name);

   [wk release];

}

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

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

   [superdealloc];

}

@end


#import <Foundation/Foundation.h>

@interface Farmer : NSObject

@property(retain,nonatomic) NSString *name;

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

@end


#import "Farmer.h"

@implementation Farmer

-(id)init{

if (self = [superinit]) {

//注冊(cè)監(jiān)聽者

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

   }

returnself;

}

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

Farmer *fa = [[Farmeralloc] init];

   fa.name = @"小明";

NSLog(@"農(nóng)民%@說我要為人民服務(wù)",fa.name);

   [fa release];

}

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

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

   [superdealloc];

}

@end


#import <Foundation/Foundation.h>

#import "King.h"

#import "Worker.h"

#import "Farmer.h"

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

{

@autoreleasepool {

//對(duì)象初始化

Worker *w = [[Workeralloc]init];

Farmer *f = [[Farmeralloc]init];

King *k = [[Kingalloc]init];

       [k senfMessage];//創(chuàng)建并發(fā)送通知

       [k release];

       [w release];

       [f release];

   }

return 0;

}


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI