泛型作用:限制类型
好处:
1.提示开发者集合的类型,提高规范,一目了然
2.编译检测,防止传入不想要数据
3.取值能用点语法
注意:
一般用于可变集合
格式:
泛型声明格式:在声明类型的时候,声明泛型,在类型后面<泛型名称> 例如自定义类<泛型>
泛型定义格式:使用类型才叫定义,类型<限制类型> 例如使用数组
为什么数组能用泛型,因为数组声明了泛型
泛型的开发使用场景:
1)声明类,某个类型不确定,用泛型
2)限制集合类型
//定义泛型@property (nonatomic,strong)NSMutableArray*arr;
_arr =[NSMutableArray array];
[_arr addObject:@"123”];
协变和逆变用于继承类型转换
__covariant(协变):子类转父类
__contravariant(逆变):父类转子类
@interface Person<__contravariant ObjcType> : NSObject
// 子类转父类
Person*p2 = [[Person alloc] init];
// 父类转子类
//Person*p3 = p2;