.蘋果為什么推出泛型:
泛型好處:
1.迎合swift
2.提高代碼規(guī)范,一看便知是什么類型
泛型作用:
1.限制類型(主要是限制集合中是什么類型)
2.從集合中取出來,可以使用點(diǎn)語(yǔ)法,不使用泛型,不能使用點(diǎn)語(yǔ)法.
泛型格式:
聲明泛型格式:在聲明類型的后面<類型>
@interfacePerson :NSObject
@property(nonatomic,strong) ObjectType language;
ObjectType就是指定的類型
定義泛型格式:在使用類型后面<類型>
ObjectType = NSString *
@property(nonatomic,strong)NSMutableArray *arr;
注意點(diǎn):泛型僅僅報(bào)警告,并不是編譯錯(cuò)誤.
集合取出來類型都是id,id不能使用點(diǎn)語(yǔ)法.
數(shù)組里不能傳入nil,真的會(huì)報(bào)錯(cuò)(運(yùn)行).
疑問:為什么集合可以使用泛型.
并不是任何系統(tǒng)類型,都可以使用泛型,一般是集合(NSSet,字典,數(shù)組)
字典使用泛型格式:NSDictionary
@property(nonatomic,strong)NSDictionary *name;
泛型開發(fā)中使用場(chǎng)景(需求):聲明類的時(shí)候不確定,使用類型創(chuàng)建對(duì)象才確定,就可以使用泛型
比如有個(gè)人,在聲明這個(gè)Person類,并不知道會(huì)哪些編程語(yǔ)言(iOS,Java),在創(chuàng)建這個(gè)人類的時(shí)候,才確定他會(huì)什么.
自定義泛型?在聲明自定義類的時(shí)候,聲明泛型,在使用自定義類的時(shí)候,定義泛型
//創(chuàng)建一個(gè)人,java
Person *p1 = [[Personalloc]init];
表示這個(gè)人的language屬性只能是java
p1.language= java;