Я использую RxSwift с 2015 года, когда он впервые появился. Я вложил это во множество малых и средних проектов за эти годы. Я бы не назвал это сложным для отладки, но это отличается для отладки. Как отметил @AjinkaSharma в комментариях, отслеживание стека - очень неприятное занятие, так что даже не беспокойтесь. Лучше поместить .debug()
операторов в стратегические c места.
Что еще более важно, если вам даже немного сложно заставить наблюдаемую цепочку работать так, как вы хотите, написать юнит тест . Чрезвычайно легко обернуть немного логики c в оператора, а затем написать тест для него с помощью RxTest, и я не знаю, почему больше людей не делают этого, кроме того, что они привыкли к юнит-тестам, являющимся болью при использовании MVC.
По моему опыту, самая трудная часть для отладки - утечка ресурсов. Даже обнаружить их может быть сложно, если вы не включите флаг TRACE_RESOURCES
в свою отладочную сборку. После того, как вы это сделаете, вы можете добавить следующее в ваш делегат приложения:
#if DEBUG
_ = Observable<Int>.interval(.seconds(1), scheduler: MainScheduler.instance)
.map { _ in RxSwift.Resources.total }
.distinctUntilChanged()
.subscribe(onNext: { print("♦️ Resource count \($0)") })
#endif
Таким образом, вы сможете отслеживать количество ресурсов при go назад и четвертом между экранами, чтобы убедиться, что все освобождается правильно.
Наконец, архитектура, с которой вы работаете, довольно функциональна и сильно отличается от той, к которой привыкли большинство разработчиков Swift. Если все сделано правильно, вы получите больше замыканий и свободных функций, а также меньше протоколов и расширений, так что к этому также придется привыкнуть.
Присоединяйтесь к нам на слабом месте RxSwift, где есть множество знающих и активных участники, которые будут рады ответить на быстрые вопросы или поделиться небольшим количеством кода в любое время дня. https://rxslack.herokuapp.com