过滤方法如何工作?

时间:2015-05-28 13:10:46

标签: ios objective-c runtime reactive-cocoa

-(instancetype)filter:(BOOL (^)(id value))block {
NSCParameterAssert(block != nil);

Class class = self.class;

return [[self flattenMap:^ id (id value) {
    if (block(value)) {
        return [class return:value];
    } else {
        return class.empty;
    }
}] setNameWithFormat:@"[%@] -filter:", self.name];

}

这是ReactiveCocoa过滤器的实现。我不知道这段代码的含义。我也无法获得对第二种返回方法的任何引用。

 return [class return:value];

此外,这个instancetype是什么意思?假设值是一个字符串,我检查它的长度是否大于2.使用filter方法返回什么?

1 个答案:

答案 0 :(得分:0)

filter方法调用当前类的类方法以使用该方法获取RACStream子类。使用return:将发出一个信号,该信号发送传递的值然后完成。使用empty给出一个信号,该信号立即发送完成而不发送下一个值,这将从流中删除值过滤值,这要归功于flattenMap:将信号切换为正在创建的信号。