為什么蘋(píng)果要推出泛型
1.迎合swift
2.泛型作用:限制類型
泛型好處:
1.提示開(kāi)發(fā)者集合中是什么類型,提高代碼規(guī)范,減少程序員之間交流
2.從集合(數(shù)組,字典,NSSet)中取出來(lái)元素可以使用點(diǎn)語(yǔ)法
泛型聲明格式:在聲明類型的時(shí)候,聲明泛型,在類型后面<泛型名稱>
泛型定義格式:使用類型才叫定義,類型<限制類型>
泛型:僅僅是報(bào)警告
id不能使用點(diǎn)語(yǔ)法
什么樣的類型才可以使用泛型?為什么集合可以使用泛型?
只有集合才可以使用泛型,其他類型暫時(shí)不支持?
定義泛型,必須要先聲明泛型
開(kāi)發(fā)場(chǎng)景:?
聲明一個(gè)類,有些屬性或者方法類型不確定,但是在使用這個(gè)類,就能很清楚知道這個(gè)對(duì)象中屬性或者方法是什么類型
Java,iOS
需求:聲明一個(gè)人類,在聲明的時(shí)候并不知道可以做什么事情,但是創(chuàng)建人對(duì)象,就知道讓這個(gè)人做什么事情
泛型開(kāi)發(fā)場(chǎng)景:限制集合
書(shū)寫(xiě)格式:
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;
協(xié)變和逆變用于繼承類型轉(zhuǎn)換,子類轉(zhuǎn)父類
__covariant(協(xié)變):子類轉(zhuǎn)父類
__contravariant(逆變):父類轉(zhuǎn)子類