虽然 NSNotification 使用简单,但它有以下缺点
HUTypedEvents 为 Objective C 中传递事件提供了一个替代解决方案。事件基于方法,所有参数都是强类型的。所有事件触发和处理代码都可以利用编译器检查和 Xcode 自动补全功能。
例如,有一个名为 EventX 的事件,它传递两个参数:(int)x 和 (float)y
创建一个中央事件处理类,使其成为单例,并通过辅助方法声明/实现事件逻辑
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
可以在任何地方调用此方法
[[CentralHandler instance] handleEventX_x:someX y:someY];
使对象符合 EventX,并实现协议方法
- (void) handleEventX_x:(int)x y:(float)y;
在初始化方法中,调用
[[CentralHandler instance] registerEventX_object:self];