项目作者: CmST0us

项目描述 :
Qt信号/槽机制在Objective-C上的实现。
高级语言: Objective-C
项目地址: git://github.com/CmST0us/NSObjectSignals.git


NSObjectSignals

Qt信号/槽机制在Objective-C上的实现。

导入工程

  1. 为你的工程使用Xcode Workspace,并添加你的工程与本工程NSObjectSignals/NSObjectSignals.xcodeproj
  2. 在你的工程Embedded Binaries配置下添加本工程的framework
  3. #import <NSObjectSignals/NSObject+SignalsSlots.h>

使用

和Qt下信号槽操作类似,首先为类声明信号

  1. - (NS_SIGNAL)clickView;

再声明,并实现监听此信号的槽函数

  1. // xxx.h
  2. - (NS_SLOT)onClickView;
  3. // xxx.m
  4. - (NS_SLOT)onClickView {
  5. NSLog(@"View clicked;");
  6. }

然后连接信号与槽

  1. [self connectSignal:@selector(clickView) forObserver:observer slot:@selector(onClickView)];

触发信号的方式和Qt有些许差别

  1. [self emitSignal:@selector(clickView) withParams:nil];

其他说明

  • 非线程安全,如果需要线程安全需求,可使用dispatch_queue操作。
  • 信号声明后,不需要实现。可以使用NS_CLOSE_SIGNAL_WARN()宏关闭未实现警告
  • 连接同时支持block方法,使用方法见Demo