简介:
1、__kindof:表示当前类或者它子类
2、__kindof书写格式:
- 放在类型前面,表示修饰这个类型(__kindof Person *)
3、__kindof :在调用的时候,很清楚的知道返回类型
4、id坏处:
- 不能在编译的时候检查真实类型
- 返回值,没有提示
使用方法如下:
1、 正常我们声明一个属性:
@property (nonatomic,strong) NSArray *viewArray;
2、看属性我们知道viewArray是一个存储UIView的数组,但是不能保证这个元素就是UIView,除非我们阅读完整的代码才会知道。
这种情况下我们通过泛型声明这个数组
@property (nonatomic,strong) NSArray<UIView *> *viewArray;
3、这样我们就知道了声明的viewArray是一个存储UIView类型的数组,如果赋值为UIButton或者UIWebView这样的子类型时,编译则会报警告⚠️
为了解决这个问题,__kindof应运而生
@property (nonatomic,strong) NSArray<__kindof UIView *> *viewArray;
4、用这种结构声明的viewArray,确保这个数组可以包含UIView以及UIView的子类型