泛型的作用:
1.限制類型
2.提高代碼規(guī)范,減少溝通成本,一看就知道集合中是什么類型
@property (nonatomic,strong) NSMutableArray<TableModel *> *dataSource;
泛型定義用法:
類型<限制類型>,在聲明類的時候,在類的后面<泛型名稱>
@interface TableModel<DogType> : NSObject
泛型的好處
1.從數(shù)組中取出來,可以使用點(diǎn)語法
self.dataSource[0].height
2.給數(shù)組添加元素,有提示
self.dataSource addObject:<#(nonnull TableModel *)#>
id類型是不能使用點(diǎn)語法的
什么時候使用泛型
在聲明類的時候,不確定某種屬性或方法類型,在使用這個類的時候才確定,就可以采用泛型
如果沒有自定義泛型,默認(rèn)就是id類型
定義
@interface TableModel<DogType> : NSObject
@property(nonatomic,strong)DogType dog;
@property(nonatomic,assign)CGFloat height;
@end
@interface BigDog : NSObject
@property(nonatomic,copy)NSString *name;
@end
@interface SimlDog : NSObject
@property(nonatomic,copy)NSString *name;
@end
使用
BigDog *a = [[BigDog alloc]init];
SimlDog *b = [[SimlDog alloc]init];
TableModel<BigDog *> *dic1 = [[TableModel alloc]init];
dic1.height = 10;
dic1.dog = a;
TableModel<SimlDog *> *dic2 = [[TableModel alloc]init];
dic2.height = 10;
dic2.dog =b;