我们在Android开发中广泛使用了greenrobot的EventBus库,我们正在为iOS寻找类似的东西。它似乎已经以NSNotificationCenter的形式构建了一种事件总线,以及相当多的第三方解决方案,这些解决方案本质上是这个功能的包装器,为方便起见增加了一些功能。
然而,我们已经习惯于事件的概念是具有明确定义的成员变量的离散对象,而多态性的另外好处是面向对象。到目前为止,我发现的大多数iOS库都会传递一个任意的事件名称和一个任意的数据包,这对我们来说有点太松散了。
到目前为止,我发现的面向对象设计的唯一例子是Tolo,乍一看看起来很棒,但在大约三年内还没有更新,除了一些小文档细节。另外,考虑到它的年龄,它仍然是用Objective-C编写的,如果我们需要在某些时候深入了解(我们非常致力于Swift),这可能会导致一些困难。
我还没有其他选择吗?
答案 0 :(得分:0)
没有理由不能创建作为NSNotificationCenter
中的对象传递的特定类。确实很多例子在这方面是懒惰的,obj-c传统上是相当松散的类型,这可能解释了这一点。
使用某种常量作为事件名称(如果使用obj-c,可以使用类常量或#define
)也很常见(在大于在线教程的项目中)。
答案 1 :(得分:0)
对于2017年以上对此感兴趣的人,我很久以前写过这个东西: https://github.com/MooseMagnet/DeliciousPubSub
它提供强类型的pub-sub。 在引擎盖下它仍然使用字符串作为键(只使用类型的名称),但你得到编译时良好......
在没有人使用它的情况下,我让它坐了一会儿,但是最近收到了为Swift 3更新过它的人的PR。哇,这样的OSS。