iOS9中新增了泛型,用于限制类型。当一个类在声明的时候,某个对象的属性不确定,只有创建的时候才能够确定,可以使用泛型。泛型放在类型后面,表示限制这个类型。
好处:
提高程序员开发规范,减少交流成本。从数组或者字段取值都是id类型,不能调用对象的方法,但是使用泛型,就可以了。就拿数组来说:
1
2
// 定义泛型:确定类型 表示数组元素是字符串类型的
@property (nonatomic, strong) NSMutableArray<NSString *> *array;
如何定义:
1
@interface NSMutableArray<ObjectType> : NSArray<ObjectType>
例子:
下面我们模仿数组来自定义一个泛型:
需求:假设有个Animal,它有个属性是食物,但是我们定义时并不能确定,只有在创建的时候才能确定。food 如果用id 来定义,就可以传入任何对象,如果用泛型声明,在创建的时候确定泛型,复制的时候就有提示了,例如下图:
Animal声明如下:其中Meat、Grass都是Food的子类。
1
2
3
4
5
6
//泛型声明
@interface Animal<ObjectType> : NSObject
@property (nonatomic,strong)ObjectType food;
@end