协变 vs 逆变
@interface RACCommand<__contravariant InputType, __covariant ValueType> : NSObject
可以看到这样的定义协变(Covariance)
@interface RACSignal<__covariant ValueType> : NSObject
@end
RACSignal<NSString *> *stringSignal = [[RACSignal alloc] init];
RACSignal<id> *anySignal = stringSignal; // 合法,因为 RACSignal 是协变的逆变(Contravariance)
总结
Last updated