statements } 或者 Type existingItem; for ( existingItem in expression ) { statements } 在上述两种情况中,表达式生成了一个遵循 NSFastEnumeration 采用(适配)快速枚举 如果一个类的实例提供了访问其它对象集合的方法,那么这个类就可以采用 NSFastEnumeration 协议.
@interface NSArray<__covariant ObjectType> : NSObject <NSCopying, NSMutableCopying, NSSecureCoding, NSFastEnumeration covariant KeyType, __covariant ObjectType> : NSObject <NSCopying, NSMutableCopying, NSSecureCoding, NSFastEnumeration
RACTuple @interface RACTuple : NSObject <NSCoding, NSCopying, NSFastEnumeration> @property (nonatomic RACTuple继承了NSCoding, NSCopying, NSFastEnumeration这三个协议。 这里之所以能用for-in,是因为实现了NSFastEnumeration协议。 至于for-in的效率,完全就看重写NSFastEnumeration协议里面countByEnumeratingWithState: objects: count: 方法里面的执行效率了。 第二个for-in循环是在遍历RACSequence,之所以可以用for-in的方式遍历就是因为实现了NSFastEnumeration协议,实现了countByEnumeratingWithState
3. concat: (在父类RACStream中定义的) + (instancetype)concat:(id<NSFastEnumeration>)streams { RACStream * 4. merge: + (RACSignal *)merge:(id<NSFastEnumeration>)signals { NSMutableArray *copiedSignals = [ 6. zip: (在父类RACStream中定义的) + (instancetype)zip:(id<NSFastEnumeration>)streams { return [[self join 7. zip: reduce: (在父类RACStream中定义的) + (instancetype)zip:(id<NSFastEnumeration>)streams reduce:(id (^)( 11. combineLatest: reduce: + (RACSignal *)combineLatest:(id<NSFastEnumeration>)signals reduce:(id (^)
b) Mutable的Array可以直接sort,不需要返回新array 如果在collection中想表达”no object”,可以使用NSNull类 很多collection类实现了NSFastEnumeration
b) Mutable的Array可以直接sort,不需要返回新array 如果在collection中想表达”no object”,可以使用NSNull类 很多collection类实现了NSFastEnumeration
CALayer: 0x6000002218a0>>", 1 ) 我们看看这个RACTuple @interface RACTuple : NSObject <NSCoding, NSCopying, NSFastEnumeration
使用 常见的用法,(先组合在聚合)combineLatest:(id<NSFastEnumeration>)signals reduce:(id (^)())reduceBlock reduce中的block
[RACSignal merge:@[signalA,signalB,signalC]]; merge:操作在上篇文章分析过,再来复习一下: + (RACSignal *)merge:(id<NSFastEnumeration
[RACSignal merge:@[signalA,signalB,signalC]];复制代码 merge:操作在上篇文章分析过,再来复习一下: + (RACSignal *)merge:(id<NSFastEnumeration
.*/} 支持快速遍历,遵从`NSFastEnumeration`协议就好,只有一个协议方法: - (NSinterger)countBeyEnumeratingWithState:(NSFastEnumerationState id *)stackbuffer count:(NSUInteger)length; NSEnumerator对象也实现了NSFastEnumeration