OC泛型的使用

简介: 在声明类的时候,不确定某种属性或方法类型,在使用这个类的时候才确定,就可以采用泛型如果没有自定义泛型,默认就是id类型

泛型的作用:


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;



相关文章
|
iOS开发
OC中的内省方法(Introspection)
OC中的内省方法(Introspection)
134 0
|
XML 数据格式
|
C# Java iOS开发