背景:
我需要开始进行我们希望长期维护的项目(基本可重用的组件,这些组件将在多个项目中重用)。我正在探索反应式编程,而反应式编程为表带来的好处是忽略它的一种方法。
我开始探索各种可用的FRP框架,RxSwift
,ReactiveCocoa
就是这样的例子。但是考虑到社区的支持和迅速的实施,RxSwift显然是您的选择。
现在RxSwift4
进行了一些重大更改,因为RxSwift3
与Swift4
不兼容。现在,社区在简化变更过渡方面做得很出色,但是在DelegateProxy
中实现的RxSwift3
之类的东西开始在RxSwift4
中被打破。因此,对于那些使用RxSwift3
的用户来说,这不仅是pod更新,而且还包含大量的更改。跟随RxSwift Git hub issue意识到它是由于Swift4
的更改而导致此中断的。
问题:
现在,我们要使用所有第三方框架,这是一个非常普遍的风险,但是对于我使用的大多数框架来说,如果破坏了它们将破坏应用程序中的一两个功能,但是如果我用RxSwift编写一个完整的应用程序并且将来的更新会中断,找到可替换的库并对其进行替换将是一项艰巨的工作。
这是为什么呢?
例如,如果您使用Alamofire,通常您会在应用程序中拥有自己的网络层,该层将向应用程序公开某些API,并且坦率地说,应用程序不必担心引擎盖下使用的库。因此,替换它是一件容易的事。但是使用RxSwift时,所有异步工具(如delegates
,blocks
,notifications
)都已包装在RxSwift组件中,例如Observables
,Subjects
,Units
等,我们无法为其编写包装器,并且如果当前RxSwift版本在将来的更新中中断,我们将一无所获除了逐字逐个地修复它们之外,还有其他解决方案,因为替换库将意味着完全重写项目。
我知道这是一种基于意见的问题,但是问题在于,在网络上没有太多相同的指导意见。如果在项目中使用FRP框架的人张贴了使用它们的最佳实践,以使对框架的依赖性降到最低,并允许我们将来轻松地转向新的FRP框架,我将不胜感激。
编辑:
上面提到的Alamofire只是为了说明包装仅在应用程序中使用的其他框架有多么容易,并且与RxSwift本身无关。所以,请不要被那个吓到了:)
最佳答案
我的基于意见的简短回答是,从Swift3开始它是足够安全的,因为可以保证从Swift3开始向后兼容。我使用RxSwift和大量派生框架(RxCoreData,RxCloudKit,RxGesture,RxCoreMotion和RaspSwift)已经大约一年了,从未遇到过任何特别麻烦的事情。但是,您又提到了一些我不使用的框架,这些框架给兼容性带来了麻烦。因此,显然可能会有令人不快的意外,通常开源社区会足够快地解决这些意外。
关于ios - 在知道快速变化的情况下,对长期运行的项目使用第三方FRP框架有多安全?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47323576/