泛型

touch方法,我們并不陌生,但是(NSSet<UITouch *> *)touches , 你是否好奇過,這個(gè)是怎么個(gè)寫法,這就是泛型

-(void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event;

泛型:限制類型

一 : 泛型使用場(chǎng)景

1、在集合(數(shù)組,字典,NSSet) 中使用泛型比較常見。
2、當(dāng)聲明一個(gè)類,類里面的某些屬性的類型不確定,這時(shí)候我們才使用泛型。

 eg:@property(nonatomic) ObjectType *language;
 //調(diào)用
 Person<IOS *> *p = [[Person alloc] init];
 //泛型沒有確定,就是id類型
 p.language = [[IOS alloc] init];
二 :泛型的書寫規(guī)范:

在類型后面定義泛型

NSMutableArray<UITouch *> *datas
三 :泛型修飾

只能修飾方法的調(diào)用

 eg :
 [self.data addObject:<#(nonnull id)#>]; //未使用泛型修飾
 [self.data addObject:<#(nonnull NSString *)#>]; //使用泛型修飾
四 : 泛型好處
1、提高開發(fā)規(guī)范,減少程序員之間的交流。
2、通過集合取出來對(duì)象,直接當(dāng)做泛型對(duì)象使用,可以直接“點(diǎn)出”對(duì)象的屬性。
 eg : self.data[0].length
五 : __covariant 和 __convariant,用來修飾泛型

__covariant(協(xié)變):用于泛型數(shù)據(jù)強(qiáng)轉(zhuǎn)類型,可以向上強(qiáng)轉(zhuǎn),子類 可以轉(zhuǎn)成 父類 【賦值】
__convariant(逆變):用于泛型數(shù)據(jù)強(qiáng)轉(zhuǎn)類型,可以向下強(qiáng)轉(zhuǎn),父類 可以轉(zhuǎn)成 子類

@interface NSArray<__covariant ObjectType> : NSObject <NSCopying, NSMutableCopying, NSSecureCoding, NSFastEnumeration>

聲明泛型:

 @interface Person<__covariant ObjectType> : NSObject
六 :id 、 instancetype 、 __kindof

創(chuàng)建一個(gè)Person類,繼承自NSObject,創(chuàng)建一個(gè)sonPerson類,繼承自Person類
在Person類中 :+(id)person;

<1> id 壞處:

1.不能在編譯的時(shí)候檢查真實(shí)類型。
2.返回值,沒有提示,就算用NSString類型也不提示警告。

 NSString *p = [SonPerson person];
<2> instancetype : 會(huì)自動(dòng)識(shí)別當(dāng)前對(duì)象的類。
 在Person類中 :+(instancetype)person
<3> __kindof :表示當(dāng)前類或者它的子類
 +(__kindof Person *)person;

__kindof :書寫格式
放在類型前面,表示修飾這個(gè)類型
__kindof :在調(diào)用的時(shí)候,很清楚的知道返回類型

eg:
SonPerson *sonPer = [SonPerson person];
<4> 區(qū)別比較:

//僅僅表示只能是Person類

 +(Person *)person;
屏幕快照 2018-04-03 下午1.00.59.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容