泛型作用:限制類型
好處:
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;