Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 过滤方法是如何工作的?_Ios_Objective C_Runtime_Reactive Cocoa - Fatal编程技术网

Ios 过滤方法是如何工作的?

Ios 过滤方法是如何工作的?,ios,objective-c,runtime,reactive-cocoa,Ios,Objective C,Runtime,Reactive Cocoa,} 这是ReactiveCocoa的filter的实现。我不知道这段代码是什么意思。我也找不到第二个返回方法的任何引用 -(instancetype)filter:(BOOL (^)(id value))block { NSCParameterAssert(block != nil); Class class = self.class; return [[self flattenMap:^ id (id value) { if (block(value)) { ret

}

这是ReactiveCocoa的filter的实现。我不知道这段代码是什么意思。我也找不到第二个返回方法的任何引用

-(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];

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

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

instancetype
意味着如果你在
RACSignal
上调用它,你会得到
RACSignal
返回,如果你在
RACSequence
上调用它,你会得到
RACSequence
返回,这样你就不必从
RACStream
向下播放。您通常会在类方法上看到它,但是……我没有注意到return:方法以前是在这个类中定义的。然而,这个方法名称也有点让人困惑,它非常简洁地描述了这个方法的实际功能,一旦你克服了最初的困惑,它就会变得非常简洁。
 return [class return:value];