Утилизировать комбинированные реактивные сигналы какао

Я создал приложение, используя реактивные сигналы какао. В своем приложении я создал несколько RacSignals, а затем объединил сигналы в один сигнал и подписался на него. Теперь, если пользователь выходит из системы, я хочу отменить все слитые мной сигналы. Есть ли способ отменить все активные RacSignals за один раз? или отмена объединенного сигнала отменит все объединенные сигналы.

2 ответа

Проверьте эту проблему на GitHub.

Таким образом, вы можете сделать что-нибудь как это:

RACDisposable *disposable = [[RACSignal combineLatest:@[signal1,signal2]]
                              subscribeError:^(NSError *error) {}];

и когда вы хотите отменить:

[disposable dispose];

Матеуш прав, но у меня есть ощущение, что вы не совсем уверены, какова семантика RACDisposable являются. Итак, здесь идет:

В примере Mateusz только подписка отменяется (удаляется), но сигнал остается включенным (если, конечно, он не отменен).

RACSignal работает, даже если на него нет подписок, и он может продолжить отправку следующих значений, если он не завершится ошибкой или завершенным событием.

Если под "Отменой" сигнала вы подразумеваете прекращение подписки на следующие значения, то утилизация одноразового использования - это путь. Если "Отмена" означает завершение сигнала, посмотрите на takeUntil: метод, который завершает возврат сигнала по вашему усмотрению (однако это все равно не завершит исходный сигнал)

Надеюсь, это немного помогло

Другие вопросы по тегам