首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RxSwift在可调试性方面有哪些技术限制?

RxSwift在可调试性方面有哪些技术限制?
EN

Stack Overflow用户
提问于 2020-02-12 06:26:28
回答 1查看 961关注 0票数 2

上下文:我的团队正在启动一个新的中型Swift项目(大约20 MM),我正在考虑在RxSwift中开发它。我的一位经理怀疑,他曾经有过在反应性编程上调试的糟糕经验,因此他建议避免使用RxSwift,并使用经典的Swift。我试图找出RxSwift的缺点,但我没有发现任何关于可调试性问题的他们

问题:,RxSwift在可调试性方面的实际技术限制是什么?

EN

Stack Overflow用户

回答已采纳

发布于 2020-02-12 11:50:01

自从2015年RxSwift首次问世以来,我就一直在使用它。这些年来,我把它放在了许多中小型项目中。我不认为这是困难的调试,但它是不同的调试。正如@AjinkaSharma在评论中提到的那样,跟踪堆栈跟踪是非常令人沮丧的体验,所以甚至不用费心。更好的做法是将.debug()运营商置于战略位置。另一个有用的工具是TimeLane,它将允许您在分析器中跟踪可观察到的数据。

更重要的是,如果您有一点点困难,让一个可观察到的链以您想要的方式工作,会编写一个单元测试。将一些逻辑封装到一个操作符中,然后使用RxTest为它编写一个测试是非常容易的,我不知道为什么更多的人除了习惯于单元测试在使用MVC时很痛苦之外,为什么不这么做。

根据我的经验,最难调试的部分是资源泄漏。除非在调试生成中包含TRACE_RESOURCES标志,否则即使检测它们也可能很困难。一旦您这样做,您可以将以下内容放入您的应用程序委托:

代码语言:javascript
运行
复制
#if DEBUG
_ = Observable<Int>.interval(.seconds(1), scheduler: MainScheduler.instance)
    .map { _ in RxSwift.Resources.total }
    .distinctUntilChanged()
    .subscribe(onNext: { print("♦️ Resource count \($0)") })
#endif

这样,当您在屏幕之间返回和第四次访问时,您可以跟踪资源计数,以确保所有内容都被正确释放。

最后,您最终使用的体系结构是非常实用的,并且与大多数Swift开发人员所习惯的非常不同。如果做对了,您最终会得到更多的闭包和空闲函数,以及更少的协议和扩展,所以这也需要习惯。

加入我们的RxSwift松弛,在那里有一群知识渊博和活跃的参与者,他们将乐意回答快速问题或分享一些代码在任何时间。https://rxslack.herokuapp.com

票数 3
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60182325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档