我试图订阅信号,但是当信元重用时,会导致异常"信号名称:已经绑定到关键路径"昵称"在对象上,添加信号名称:是未定义的行为"
这是代码
RACSignal *_sn = [[cell.functionTextField.rac_textSignal takeUntil:cell.rac_prepareForReuseSignal] map:^(NSString *value) {
if ([value length] > 9) {
return [value substringToIndex:9];
} else {
return value;
}
}];
RAC(cell.functionTextField, text) = _sn;
RAC(_hp,nickname) = _sn;
我该如何解决?
答案 0 :(得分:0)
- (RACDisposable *)setKeyPath:(NSString *)keyPath onObject:(NSObject *)object nilValue:(id)nilValue
调试模型中上述方法[RACSignal + Operations.m]引发的断言。 避免两次绑定信号是个好习惯。
答案 1 :(得分:0)
在我的情况下,这是因为我同时做了两件事,导致了冲突:
1)将RACCommand设置为.rac_command
上的UIButton
allowsConcurrentExecution = YES
,enabled
启动网络请求;
2)而且......我正在设置UIButton
的{{1}}属性为“不执行:
RAC(viewallButton, enabled) = [command.executing not];
显然,allowsConcurrentExecution = NO
已经负责在信号仍在执行网络请求时禁用按钮,当我添加此代码以禁用按钮时,它会将其绑定两次,从而导致冲突。 / p>