泛型的作用:
1.限制类型
2.提高代码规范,减少沟通成本,一看就知道集合中是什么类型
@property (nonatomic,strong) NSMutableArray<TableModel *> *dataSource;
泛型定义用法:
类型<限制类型>,在声明类的时候,在类的后面<泛型名称>
@interface TableModel<DogType> : NSObject
泛型的好处
1.从数组中取出来,可以使用点语法
self.dataSource[0].height
2.给数组添加元素,有提示
self.dataSource addObject:<#(nonnull TableModel *)#>
id类型是不能使用点语法的
什么时候使用泛型
在声明类的时候,不确定某种属性或方法类型,在使用这个类的时候才确定,就可以采用泛型
如果没有自定义泛型,默认就是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;