oc 通知中心

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

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

oc 通知中心_第1张图片

//

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

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


你可能感兴趣的:(oc 通知中心)