8

有一个名为mono-reactive的 Rx 端口,其中包含一个 MonoTouch 项目,但作者在十天前宣布他将放弃该项目,转而支持 Microsoft 开源实现:

我很高兴地宣布,既然微软已经在 Apache 许可证中开源了 Reactive Extensions,我将不再使用这个代码库。 http://rx.codeplex.com/

MonoDevelop 试图在Rx master中打开 Rx.sln 时挂起,并且那里没有 MonoTouch 目标。MonoTouch 还没有 PCL 支持

我想知道是否有人已经为 Rx 建立了一个与 MonoTouch 兼容的项目,以及它是否真的可以在生产中使用。

4

1 回答 1

8

微软处方

我自己建立了一个项目,结合了Rx 的 codeplex中的CoreInterfacesLinqPlatformServices。 你去:

https://github.com/stampsy/rx-monotouch

它适用于引用类型,更不用说值类型(见下文)。不幸的是,由于错误83299087
它无法编译。它现在编译得很好。

单反应

我还使用了单反应,它对我来说效果很好。虽然微软的实现看起来更简洁可靠,但单反应式更小,更容易在真正需要时修复。

您可以尝试两种方法,看看哪种方法最适合您。
快乐观察!

减轻崩溃

使用这两个框架时,我经常遇到设备上的 AOT 限制导致的崩溃。Xamarin 的 Rolf 告诉我,您通常可以通过不使用值类型作为 Rx 泛型类型参数来解决大多数 AOT 限制。

例如,IObservable<bool>扩展可能会在设备上崩溃IObservable<long>,但引用类型应该适用于大多数方法。

我的 Rx 版本中,我添加IntervalSafe了返回的方法Unit(我将其更改为引用类型,而不是结构)而不是long,因此不会导致整个代码库发生数十次崩溃。

一些 Rx 方法仍然崩溃,但修复这些崩溃相当容易

请参阅Costo 的修复或ThrottleBuffer修复以供参考。
我很乐意合并处理其他 Rx 方法及其重载的拉取请求。

于 2012-11-21T11:04:35.483 回答