iOS 9 新特性

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加类名




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值