HUTypedEvents 1.0.0

HUTypedEvents 1.0.0

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布上次发布2014年12月

未知用户 维护。



  • Alec Gorge, Bao Lei 和 Jon Luo

用途

虽然 NSNotification 使用简单,但它有以下缺点

  1. 编译器无法检查通知名称是否有效
  2. 用户必须弄清楚隐藏在 userInfo 中的所有参数
  3. 通知对象和所有参数都是弱类型
  4. 在触发或处理通知时,几乎没有 Xcode 自动补全功能
  5. 为了传递原始值,必须将其包装成对象(例如,整数使用 NSNumber)

HUTypedEvents 为 Objective C 中传递事件提供了一个替代解决方案。事件基于方法,所有参数都是强类型的。所有事件触发和处理代码都可以利用编译器检查和 Xcode 自动补全功能。

使用方法

例如,有一个名为 EventX 的事件,它传递两个参数:(int)x 和 (float)y

1. 定义事件

创建一个中央事件处理类,使其成为单例,并通过辅助方法声明/实现事件逻辑

CentralHandler.h

HUDeclareEvent(EventX, x:(int)x y:(float)y)

@interface CentralHandler : NSObject

HUDeclareSingleton(CentralHandler);
HUDeclareEventRegistation(EventX, x:(int)x y:(float)y);

@end

CentralHandler.m

@implementation CentralHandler : NSObject <ProtocolForEventB>

HUImplementSingleton(CentralHandler);
HUImplementEvent(EventX, x:(int)x y:(float)y);

@end

2. 从任何对象触发事件

可以在任何地方调用此方法

[[CentralHandler instance] handleEventX_x:someX y:someY];

3. 将一个对象注册为此事件的监听者

使对象符合 EventX,并实现协议方法

- (void) handleEventX_x:(int)x y:(float)y;

在初始化方法中,调用

[[CentralHandler instance] registerEventX_object:self];