在哪种情况下使用 RxSwift 和 RxCocoa 的好理由?

问题描述

前几天开始学习RxSwift,但是越写代码越不明白哪些情况需要使用响应式编程,我可以不用RxSwift写同样的代码,使用NotificaitionCenter,delegate pattern,Grand中央调度,关闭

我知道 RxSwif 和 RxCocoa 提供了下一个机会:

有一些不同的方法可以将信息从一个对象传递到 iOS 中的另一个响应式(通知、传入闭包、委托、 KVO,& target/action,) 这些不同的系统中的每一个都可能很简单 本身,但 iOS 应用程序逻辑的大部分复杂性都在 必须从这些系统之一转换到另一个系统。 RxSwift/RxCocoa 几乎替换了所有这些系统 以 Rx 方式。

但是当我尝试在 Rx 上编写代码时,我发现这段代码不容易理解。

也许有人可以举例说明什么时候需要在应用程序中使用 Rx 或者在大多数情况下不需要使用 Rx,因为代码理解起来很复杂,我很喜欢 Rx 的知识,但没有完全理解它的优点需要时使用。

解决方法

既然你在问题中引用了我的话,我想我应该提供一个答案......

最经典的例子是搜索...编写一个视图控制器,允许用户输入文本,然后发出网络请求,然后将结果解码为字符串数组,然后在表格视图中显示结果。

>

为了在没有 Rx 的情况下做到这一点,您需要协调来自两个委托、两个闭包和两个状态变量的三个方法。重要的是,您在代码中的任何地方都看不到与上面的句子看起来很相似的任何内容。

使用 Rx 实现的此功能将是一条直线,从搜索文本字段到网络请求,再到解码器再到表视图。就像需求描述一样。

所以这不仅仅是需要更少代码的问题。这是一个不再需要协调绝望的通信系统的问题。用一个单一的代码块(或至少是更少的代码块)来表示一个功能是一个问题。

,

嗯,这是一个和其他任何工具一样的工具。有些人使用它是因为您最终编写的代码比其他方式少。它确实有一个陡峭的学习曲线,但如果项目需要它(项目已经使用它,并且相关人员希望继续使用它),它可能很有价值。

我在有 RxSwift 项目的公司工作。所有架构都是围绕 RxSwift 构建的,所有代码都必须使用 RxSwift 编写。与不使用 RxSwift 相比,代码没有那么复杂。主要问题是很难让新开发人员加入该项目,因为正如我之前所说,Rx 的学习曲线非常陡峭。最后,出于这个原因,他们决定开始从 Rx 转向更经典的方法。

我还曾为完全拒绝 RxSwift 的公司工作,因为他们不希望在他们的应用中存在另一个 3rd 方依赖项。

所以归根结底,这只是一个偏好问题。我个人确实看到了 Rx 的好处和简洁性,但更喜欢尽可能少地使用 3rd 方依赖项。

要真正获得 Rx 的好处,您必须在项目中大量使用它并围绕它构建架构。与其他 3rd 方库不同,您不能只是在 RxSwift 周围放置一个包装器,以防它消失并且您决定用其他东西替换它。但话说回来,Rx 在所有平台和编程语言上都如此广泛,我认为它不会很快消失。

长话短说,使用它,看看你是否喜欢。如果没有,至少如果您碰巧开始从事使用它的其他人的项目,那么知道它是件好事。