Утилизировать комбинированные реактивные сигналы какао
Я создал приложение, используя реактивные сигналы какао. В своем приложении я создал несколько RacSignals, а затем объединил сигналы в один сигнал и подписался на него. Теперь, если пользователь выходит из системы, я хочу отменить все слитые мной сигналы. Есть ли способ отменить все активные RacSignals за один раз? или отмена объединенного сигнала отменит все объединенные сигналы.
2 ответа
Проверьте эту проблему на GitHub.
Таким образом, вы можете сделать что-нибудь как это:
RACDisposable *disposable = [[RACSignal combineLatest:@[signal1,signal2]]
subscribeError:^(NSError *error) {}];
и когда вы хотите отменить:
[disposable dispose];
Матеуш прав, но у меня есть ощущение, что вы не совсем уверены, какова семантика RACDisposable
являются. Итак, здесь идет:
В примере Mateusz только подписка отменяется (удаляется), но сигнал остается включенным (если, конечно, он не отменен).
RACSignal
работает, даже если на него нет подписок, и он может продолжить отправку следующих значений, если он не завершится ошибкой или завершенным событием.
Если под "Отменой" сигнала вы подразумеваете прекращение подписки на следующие значения, то утилизация одноразового использования - это путь. Если "Отмена" означает завершение сигнала, посмотрите на takeUntil:
метод, который завершает возврат сигнала по вашему усмотрению (однако это все равно не завершит исходный сигнал)
Надеюсь, это немного помогло