iOS9新特性之泛型/协变/逆变

为什么苹果要推出泛型

1.迎合swift

2.泛型作用:限制类型

泛型好处:

1.提示开发者集合中是什么类型,提高代码规范,减少程序员之间交流

2.从集合(数组,字典,NSSet)中取出来元素可以使用点语法

泛型声明格式:在声明类型的时候,声明泛型,在类型后面<泛型名称>

泛型定义格式:使用类型才叫定义,类型<限制类型>

泛型:仅仅是报警告

id不能使用点语法

什么样的类型才可以使用泛型?为什么集合可以使用泛型?

只有集合才可以使用泛型,其他类型暂时不支持?

定义泛型,必须要先声明泛型

开发场景: 

声明一个类,有些属性或者方法类型不确定,但是在使用这个类,就能很清楚知道这个对象中属性或者方法是什么类型

Java,iOS

需求:声明一个人类,在声明的时候并不知道可以做什么事情,但是创建人对象,就知道让这个人做什么事情

泛型开发场景:限制集合

书写格式:

Person.h    Language.h    iOS.h    Java.h

iOS *ios = [[iOS alloc] init];       

 Java *java = [[Java alloc] init];           

// iOS   

Person *p = [[Person alloc] init];

p.language = ios;       

// Java   

Person *p1 = [[Person alloc] init];

p1.language = java;

协变和逆变用于继承类型转换,子类转父类

__covariant(协变):子类转父类

__contravariant(逆变):父类转子类

你可能感兴趣的:(iOS9新特性之泛型/协变/逆变)