2016-07-28 58 views
1

我们在Android开发中广泛使用了绿色机器人的EventBus库,我们正在寻找类似于iOS的东西。它看起来像一种事件总线已经内置在NSNotificationCenter的形式,以及相当多的第三方解决方案,基本上是包装这个功能与一些附加功能,方便。具有事件对象的iOS事件总线库?

但是,我们习惯于将事件定义为具有明确定义的成员变量的离散对象的概念,以及面向对象的多态性的额外好处。到目前为止,我发现的大多数iOS库都有传递任意事件名称和任意数据包的数据,这对我们来说有点太松散。

迄今为止我发现的唯一一个面向对象设计的例子是Tolo,它乍看起来很好看,但大约三年后还没有更新,除了一些小的文档细节。另外,考虑到它的年龄,它仍然是用Objective-C编写的,如果我们需要在某个时候仔细研究一下(我们非常致力于Swift),这可能会导致一些困难。

还有其他的选择,我还没有遇到过呢?

回答

0

没有理由不能创建您在NSNotificationCenter中作为对象传递的特定类。其实很多例子在这方面都很懒惰,obj-c传统上相当松散地输入,这可能解释了这一点。

它也相当普遍(在比在线教程更大的项目中)使用某种常量作为事件名称,如果使用obj-c,则可以使用类常量或#define

+0

由于对象(或对象的内容)需要根据事件类型而异,因此创建要传递的特定类是不够的。基本上,我们只是希望在事件名称和数据类型之间进行严格的实施。我试着用泛型和相关类型来处理这个,但它不会为我而来。 –

+0

你总是可以在通用对象中的某个变量中放置一个数据类型id,而不仅仅是用它来选择相关的处理。你怎么看?顺便说一句,如果你发现EventBus端口swift请张贴链接在这里。 –

0

对于2017+关心这个人,我写这个东西很久以前的事: https://github.com/MooseMagnet/DeliciousPubSub

酒店提供强类型的发布 - 订阅。 在引擎盖下它仍然使用字符串作为一个键(只是使用类型的名称),但你得到编译时的善良...

我离开它坐了一段时间,假设没有人正在使用它,但是最近从一个为Swift 3更新过的人收到了一个PR。哇,这样的OSS。