现在的位置: 首页 > 综合 > 正文

oc 通知中心

2017年02月26日 ⁄ 综合 ⁄ 共 1762字 ⁄ 字号 评论关闭

这是我在 千峰视频网上看到的 对于学习通知的例子还是挺有用的。

一、首先创建一个简单的命令行工程


//

//  BJBroadcast.m

//  通知中心

//

//  Created by qin on 14-4-29.

//  Copyright (c) 2014 zhou. All rights reserved.

//

//通知中心代码

#import "BJBroadcast.h"

@implementation BJBroadcast

- (void)broadvastLooper

{

    [NSTimer
scheduledTimerWithTimeInterval:1.0f
target:self
selector:@selector(broadcast)
userInfo:nil
repeats:YES];

}

- (void)broadcast

{

    //1.取得通知中心

    NSNotificationCenter *nc = [NSNotificationCenter
defaultCenter];

    static
int i;

   
NSString *count = [NSString
stringWithFormat:@"bcast %d",i++];

    NSDictionary *dict = [NSDictionary
dictionaryWithObjectsAndKeys:@"BJ broadcast",@"name",count,@"Value",
nil];

    //2.发送广播

    [nc postNotificationName:@"BJBroadcast"
object:self
userInfo:dict];

}

@end


//接收方代码

#import "Listener.h"

@implementation Listener

- (void)wantToListen

{

    [[NSNotificationCenter
defaultCenter]addObserver:self
selector:@selector(recvBcast:)
name:@"BJBroadcast"
object:nil];

    

    //param1 param2
这两个参数是只要有
BJBroadcast广播就调用[self recvBcast]

    //第四个蚕食一般都设为nil

    //要真正的接收广播数据

}

- (void)recvBcast:(NSNotification *)notify

{

//    NSString *name = notify.name;

   
NSLog(@"notiy is %@",notify);

}

@end

主函数:

#import <Foundation/Foundation.h>

#import "BJBroadcast.h"

#import "Listener.h"

int main(int argc,
const char * argv[])

{

    @autoreleasepool

    {

       
Listener *l1 = [[Listener
alloc]init];

        [l1
wantToListen]; //监听者

        BJBroadcast *bj = [[BJBroadcast
alloc]init];

        [bj
broadcast];    //通知者

        [[NSRunLoop
currentRunLoop]run];

    }

   
return 0;

}


打印:

2014-04-29 23:41:21.131
通知[760:303] notiy is NSConcreteNotification 0x10010c790 {name = BJBroadcast; object = <BJBroadcast: 0x10010c200>; userInfo = {

    Value = "bcast 0";

    name = "BJ broadcast";

}}

主要的代码 就是发送广播和接收广播

[nc postNotificationName:@"BJBroadcast"
object:self
userInfo:dict];

    [[NSNotificationCenter
defaultCenter]addObserver:self
selector:@selector(recvBcast:)
name:@"BJBroadcast"
object:nil];

开发中经常会用到通知....


抱歉!评论已关闭.