__kindof是在xcode7中出现的新特性,作用在于指明泛型可以包含其子类。
使用范例:
1.例如普通的属性声明和方法声明如下
@property (nonatomic, strong) NSArray *viewArray;
- (void)createWithViewArray:(NSArray *)viewArray;
2.通过加入泛型我们可以声明数组中的对象为UIView
@property (nonatomic, strong) NSArray<UIView *> *viewArray;
- (void)createWithViewArray:(NSArray<UIView *> *)viewArray;
但是这样声明的数组只能包含UIView类型的元素,如果元素被赋值为UIImageView或其他UIView的子类型时,编译器就会报警告??
3.通过加入关键字__kindof,这个数组就可以包含泛型本身和其子类
@property (nonatomic, strong) NSArray<__kindof UIImageView *> *viewArray;
- (void)createWithViewArray:(NSArray<__kindof UIView *> *)viewArray;
原文:https://www.cnblogs.com/leisurezxy/p/10516332.html