发射器 0.0.9

Emitter 0.0.9

测试已测试
编程语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2014年12月

Nuno Sousa维护。



Emitter 0.0.9

  • 作者:
  • Seegno

为Objective-C实现的EventEmitter,尽可能地实现了NodeJS EventEmitter API。

该库向NSObject添加了一个类别,允许任何对象使用 emit(发出)或 listen(监听)事件。

Build Status

安装它

将它作为Cocoapods依赖项添加到您的Podfile中

pod 'Emitter'

使用它

快速开始

在任何对象上注册一个事件监听器

#import <EventEmitter/EventEmitter.h>

NSObject *server = [[NSObject alloc] init];

[server on:@"connection" listener:^(id stream) {
    NSLog(@"someone connected!");
}];

[server once:@"connection" listener:^(id stream) {
    NSLog(@"Ah, we have our first user!");
}];

稍后,向同一对象发起一个事件

[server emit:@"connection", stream];

[server emit:@"event", @{
    @"type": @"somethinghappened",
    @"another key": @"another value",
}];

监听事件

您可以使用以下方式监听事件:

- (void)addListener:(NSString *)event listener:(id)listener;
- (void)on:(NSString *)event listener:(id)listener;
- (void)once:(NSString *)event listener:(id)listener;

停止监听:

- (void)removeListener:(NSString *)event listener:(id)listener;
- (void)removeAllListeners:(NSString *)event;

发出事件

使用以下方式发出事件:

- (void)emit:(NSString *)event, ...;

选择器/目标语法

您还可以使用选择器和目标对象通过以下方式监听事件:

- (void)addListener(NSString *)event selector:(SEL)selector target:(id)target;
- (void)on:(NSString *)event selector:(SEL)selector target:(id)target;
- (void)once:(NSString *)event selector:(SEL)selector target:(id)target;

停止监听:

- (void)removeListener:(NSString *)event selector:(SEL)selector target:(id)target;
- (void)removeAllListeners:(NSString *)event;

动态块调用

您提供的任何回调块将以正确的参数被调用(我们使用了BlocksKit以动态调用回调块)。

这意味着您可以发出具有任意数量参数的事件,例如:

[object emit:@"event", @"hello", @123, NO, @{ @"key": @"value" }];

可以通过以下方式监听它们:

[object on:@"event", ^(NSString *param1, NSNumber *param2, BOOL param3, NSDictionary *param4){
    NSLog(@"Every parameter was passed correctly!");
}];

致谢

原始想法来源于jerolimov的EventEmitter,并扩展以支持动态块参数和用于发出事件的单个方法。