您的位置:首页 > 移动开发 > IOS开发

iOS 9 新特性

2016-07-11 22:00 295 查看
1、泛型

苹果为什么推出泛型:


泛型好处:


1.迎合swift

2.提高代码规范,一看便知是什么类型

泛型作用:

1.限制类型(主要是限制集合中是什么类型)

2.从集合中取出来,可以使用点语法,不使用泛型,不能使用点语法.

泛型格式:

声明泛型格式:在声明类型的后面<类型>

@interfacePerson :NSObject

@property(nonatomic,strong) ObjectType language;

ObjectType就是指定的类型

定义泛型格式:在使用类型后面<类型>

ObjectType = NSString *

@property(nonatomic,strong)NSMutableArray *arr;

注意点:泛型仅仅报警告,并不是编译错误.

集合取出来类型都是id,id不能使用点语法.

数组里不能传入nil,真的会报错(运行).

疑问:为什么集合可以使用泛型.

并不是任何系统类型,都可以使用泛型,一般是集合(NSSet,字典,数组)

字典使用泛型格式:NSDictionary

@property(nonatomic,strong)NSDictionary *name;

泛型开发中使用场景(需求):声明类的时候不确定,使用类型创建对象才确定,就可以使用泛型

比如有个人,在声明这个Person类,并不知道会哪些编程语言(iOS,Java),在创建这个人类的时候,才确定他会什么.

自定义泛型?在声明自定义类的时候,声明泛型,在使用自定义类的时候,定义泛型

//创建一个人,java

Person *p1 = [[Personalloc]init];

表示这个人的language属性只能是java

p1.language= java;

2、协变、逆变

__covariant(协变):用于数据强制转换,可以向上强转,子类->父类

__contravariant(逆变):用于数据强制转换,可以向下强转 父类->子类

3、__kinkof

__kindof
:一般用在方法返回值的前面修饰,表示返回值可以是当前类或者它子类

__kindof
书写格式:

放在类型前面,表示修饰这个类型(
__kindof Person *
),表示可以是Person类或者它的子类

在定义初始化类方法返回值类型的时候,最早使用id作为返回值类型,后来使用instancetype,现在可以使用__kindof加类名
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  泛型 iOS 新特性