OC通知中心

//通知中心广播站建立
//1.head.h
#import <Foundation/Foundation.h>

@interface BJBroadcast : NSObject
-(void)sendBroadCast;
-(void)sendBroadCastLoop;
@end

//2.implementation
#import "BJBroadcast.h"

@implementation BJBroadcast
-(void)sendBroadCastLoop
{
    //每隔一秒发送一次广播消息
    [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(sendBroadCast) userInfo:nil repeats:YES];
}

-(void)sendBroadCast
{
    //创建广播站
    NSNotificationCenter * notificationCenter = [NSNotificationCenter defaultCenter];
    
    static NSUInteger i;
    
    NSString *count=[[NSString alloc]initWithFormat:@"broadCount %ld",i++];
    
    NSDictionary *dic=[[NSDictionary alloc]initWithObjectsAndKeys:@"BJBroadcast",@"Name",count,@"Timer", nil];
    
    [notificationCenter postNotificationName:@"BJBroadcast" object:self userInfo:dic];
    [count release];
    [dic release];
}
@end

//广播接受者
//1.head.h

@interface Listener : NSObject
-(void)wantTolistenBroadcast;
@end

//implementation
#import "Listener.h"

@implementation Listener
-(void)wantTolistenBroadcast
{
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(Broadcast:) name:@"BJBroadcast" object:nil];
/*#program mark
    1.addObserver:表示谁对通知中心发出的信息感兴趣
    2.selector:收到该感兴趣信息的处理函数
    3.name:对什么名字的广播感兴趣
    4.object:对谁发出的广播感兴趣,nil表示对任何人发出的广播都感兴趣
*/
}
-(void)Broadcast:(NSNotification *)notification
{
    NSLog(@"%@",notification);
}
@end

//main
#import <Foundation/Foundation.h>
#import "BJBroadcast.h"
#import "Listener.h"

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

    @autoreleasepool {
        
        Listener *aListener=[[Listener alloc]init];
        
        [aListener wantTolistenBroadcast];
        
        BJBroadcast *Bj=[[BJBroadcast alloc]init];

        [Bj sendBroadCastLoop];
        [[NSRunLoop currentRunLoop] run];//一定要添加该方法,否则无法循环
        
        [aListener release];
        [Bj release];
    }
    return 0;
}
时间: 2024-10-19 01:56:41

OC通知中心的相关文章

自实现OC通知中心

// //  NotificationCenter.h //  Demo // //  Created by QzydeMac on 15/1/17. //  Copyright (c) 2015年 Qzy. All rights reserved. // #import <Foundation/Foundation.h> @interface Notification : NSObject @property (retain,nonatomic,readwrite) NSDictionary

iOS之NSNotificationCenter通知中心使用事项

其实这里的通知和之前说到的KVO功能很想,也是用于监听操作的,但是和KVO不同的是,KVO只用来监听属性值的变化,这个发送监听的操作是系统控制的,我们控制不了,我们只能控制监听操作,类似于Android中系统发送的广播,我们只能接受.但是通知就不一样了,他的监听发送也是又我们自己控制,我们可以在任何地方任何时机发送一个通知,类似于Android中开发者自己发送的广播.从这一点看来,通知的使用场景更为广泛了. 下面就来看一下例子: 还是护士和小孩的那个例子 Children.h [objc] vi

简化通知中心的使用

说明 1. 简化通知中心,笔者曾经实现过不需要移除的通知中心,基于弱引用集合(相对于强引用集合如NSArray,NSDictionary等)编写,本例子并无太多新意 2. 简化的通知中心由一个对象组织控制,不需要你手动移除被监听的对象,这是唯一的一点点有新意的地方 3. 在处理接收通知对象的地方,笔者提供了一个方法来简化取值操作,相对应的,发送通知消息的时候,被发送的对象也请使用指定的格式(都是用weak修饰,无需担心被持有) 源码 https://github.com/YouXianMing/

Notification Centers 通知中心

Notification Centers 通知中心 A notification center manages the sending and receiving of notifications. It notifies all observers of notifications meeting specific criteria. The notification information is encapsulated in NSNotification objects. Client o

通知中心 - NSNotificationCenter

---恢复内容开始--- NS_ASSUME_NONNULL_BEGIN /**************** Notifications ****************/ // 通知,被发送,被接受. @interface NSNotification : NSObject <NSCopying, NSCoding> 通知的名字 @property (readonly, copy) NSString *name; 具体某一个对象. @property (nullable, readonly,

第二十六篇:通知中心 NSNotificationCenter

1.通知中心(NSNotificationCenter) ?每一个应用程序都有一个通知中心(NSNotificationCenter)实例,专门负责协助不同对象之间的消息通信 ?任何一个对象都可以向通知中心发布通知(NSNotification),描述自己在做什么.其他感兴趣的对象(Observer)可以申请在某个特定通知发布时(或在某个特定的对象发布通知时)收到这个通知 2.通知(NSNotification) >一个完整的通知一般包含3个属性: - (NSString*)name; // 通

iOS开发中的错误整理,再一次整理通过通知中心来处理键盘,一定记得最后关闭通知中心

一.打开通知中心,监听键盘的显示与隐藏 二.最后记得将监听通知的对象移除

通知中心(NSNotificationCenter)

•通知机制 •掌握 •通知的发布 • •通知的监听 • •通知的移除 •通知中心(NSNotificationCenter) •每一个应用程序都有一个通知中心(NSNotificationCenter)实例,专门负责协助不同对象之间的消息通信 •任何一个对象都可以向通知中心发布通知(NSNotification),描述自己在做什么.其他感兴趣的对象(Observer)可以申请在某个特定通知发布时(或在某个特定的对象发布通知时)收到这个通知 •通知(NSNotification) •一个完整的通知

iOS通知中心 NSNotificationCenter详解

NSNotificationCenter的适用场景,原理机制,使用步骤等. 通知中心的使用顺序:先确保注册了观察者,因为发送通知是一瞬间的事,如果没有注册观察者,发送通知后再注册是不会收到的. 总结:通知只会发送给当前监听着的对象. 代码 //注册通知  在关心该通知的页面注册监听 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(tongzhi:) name:@"tongzhi" obj