為什么蘋果要推出泛型
1.迎合swift
2.泛型作用:限制類型
泛型好處:
1.提示開發者集合中是什么類型,提高代碼規范,減少程序員之間交流
2.從集合(數組,字典,NSSet)中取出來元素可以使用點語法
泛型聲明格式:在聲明類型的時候,聲明泛型,在類型后面<泛型名稱>
泛型定義格式:使用類型才叫定義,類型<限制類型>
泛型:僅僅是報警告
id不能使用點語法
什么樣的類型才可以使用泛型?為什么集合可以使用泛型?
只有集合才可以使用泛型,其他類型暫時不支持?
定義泛型,必須要先聲明泛型
開發場景:?
聲明一個類,有些屬性或者方法類型不確定,但是在使用這個類,就能很清楚知道這個對象中屬性或者方法是什么類型
Java,iOS
需求:聲明一個人類,在聲明的時候并不知道可以做什么事情,但是創建人對象,就知道讓這個人做什么事情
泛型開發場景:限制集合
書寫格式:
Person.h ? ?Language.h ? ?iOS.h ? ?Java.h
iOS *ios = [[iOS alloc] init];? ? ? ?
?Java *java = [[Java alloc] init];? ? ? ? ? ?
// iOS? ?
Person<iOS *> *p = [[Person alloc] init];
p.language = ios;? ? ? ?
// Java? ?
Person<Java *> *p1 = [[Person alloc] init];
p1.language = java;
協變和逆變用于繼承類型轉換,子類轉父類
__covariant(協變):子類轉父類
__contravariant(逆變):父類轉子類