我可以在 MonoTouch 项目中使用响应式扩展吗?
Posted
技术标签:
【中文标题】我可以在 MonoTouch 项目中使用响应式扩展吗?【英文标题】:Can I use Reactive Extensions in a MonoTouch project? 【发布时间】:2012-11-07 20:49:33 【问题描述】:有一个名为 mono-reactive 的 Rx 端口包含一个 MonoTouch 项目,但作者 announced ten days ago 他正在放弃该项目,转而支持微软开源实现:
我很高兴地宣布我不会再处理这个代码库了 现在微软已经在 Apache 许可证中开源了 Reactive Extensions。 http://rx.codeplex.com/
MonoDevelop 在尝试打开 Rx master 中的 Rx.sln 时挂起,而且那里没有 MonoTouch 目标。 PCL support is not there yet for MonoTouch too.
我想知道是否有人已经为 Rx 建立了一个与 MonoTouch 兼容的项目,以及它是否真的可以在生产中使用。
【问题讨论】:
您可以尝试下载源代码并创建一个包含所有 Rx 文件链接的 MonoTouch 库项目。(这可能是目前唯一的方法) 你可能想阅读这个answers.unity3d.com/questions/288785/… 【参考方案1】:微软接收
我自己提出了一个项目,结合了Rx's codeplex的Core、Interfaces、Linq和PlatformServices . 给你:
https://github.com/stampsy/rx-monotouch
它适用于引用类型,更不用说适用于值类型(见下文)。不幸的是,由于错误 现在编译就好了。8329 和 9087,它无法编译.
单反应
我也使用了mono-reactive,它对我来说效果很好。虽然 Microsoft 的实现看起来更简洁可靠,但 monoreactive 更小,并且在真正需要时更容易修复。
您可以同时尝试这两种方法,看看哪种方法最适合您。 观察愉快!
缓解崩溃
在使用这两个框架时,我经常遇到由 AOT 引起的崩溃 设备上的限制。 Xamarin 的 Rolf 告诉我,你可以 通常通过不使用值类型来解决大多数 AOT 限制 Rx 泛型类型参数。
例如,IObservable<bool>
扩展可能会在设备上崩溃,IObservable<long>
也会崩溃,但引用类型应该适用于大多数方法。
在my version of Rx 中,我添加了IntervalSafe
方法,该方法返回Unit
(我将其更改为引用类型,而不是结构)而不是long
,因此不会导致数十次崩溃代码库。
一些 Rx 方法仍然崩溃,但修复这些崩溃相当容易。
请参阅 Costo 的 Throttle
fix 或 my Buffer
fix 以供参考。
我很乐意合并处理其他 Rx 方法及其重载的拉取请求。
【讨论】:
它仍然是实际的 w.r.t.微软发布的响应式扩展(2.2.5)? @SargeBorsch 可能不是,但值得检查。 MonoTouch 已经在 AOT 通用支持方面看到了一些改进,但最好你自己看看,因为我已经有几年没玩过它了。 好的,谢谢。我们可能很快就会尝试……顺便说一句,我什至可以将 Rx-Main 包添加到 PCL 项目中。以上是关于我可以在 MonoTouch 项目中使用响应式扩展吗?的主要内容,如果未能解决你的问题,请参考以下文章