我可以在MonoTouch项目中使用反应式扩展吗



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

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

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

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

Microsoft Rx

我自己提出了一个项目,结合了Rx的codeplex中的Core接口Linq平台服务
好了:

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

它适用于引用类型,更不用说值类型了(见下文)
不幸的是,由于错误8329和9087,它没有编译。它现在编译得很好。

单反应的

我也使用了mono-reactive,它对我来说效果很好。虽然微软的实现看起来更简洁可靠,但mono-reactor更小,在真正需要的时候更容易修复。

你可以同时尝试这两种方法,看看什么对你最有效
观察愉快!

缓解碰撞

对于这两个框架,我经常遇到由AOT引起的崩溃设备的限制。Xamarin的Rolf告诉我,你可以通常通过不使用值类型来绕过大多数AOT限制Rx通用类型参数。

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

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

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

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

相关内容

  • 没有找到相关文章