#objective-c #reactive-cocoa
#objective-c #реактивный-cocoa
Вопрос:
Когда здесь вступает в силу переопределение нулевого значения:
RACChannelTerminal* sliderTerminal = [self.view.volumeSlider rac_newValueChannelWithNilValue:@0];
Когда ползунок получает nil от другого терминала или когда он собирается отправить nil?
Ответ №1:
Первое — оно заменяет nil
значения, которые отправляются на следующий терминал, на который подписан элемент управления (ползунок).
Внутренние реализации буквально содержат этот фрагмент:
[channel.followingTerminal map:^(id value) {
return value ?: nilValue;
}];
Комментарии:
1. Таким образом, ползунки отправляют nil… почему это должно произойти
2. Хм, это другой вопрос, чем тот, который вы задавали изначально. Вы действительно видите, что это происходит? Почему вы вообще используете
rac_newValueChannelWithNilValue
в первую очередь, чего вы пытаетесь достичь?3. У меня есть ползунок, который связан с внешним процессом (устройством) проблема в том, что иногда ползунок просто переходит в положение «Нулевое значение» без причины…
4. Ну, похоже, я перепутал терминалы при чтении кода, и в конце концов, это может быть с точностью до наоборот. Значение nil применяется к
following
терминалу, который является терминалом, на который подписывается элемент управления (ползунок). Это означает, что значение nil поступает из вашего внешнего процесса, что, вероятно, имеет больше смысла5. Было бы разумно, если бы для этого процесса не было установлено значение игнорировать nil 🙂