ios9 新出关键字

注意:新出关键字只能修饰对象 不能修饰基本数据类型
nullable: 可为空,适配swift
nonnull: non 非 null 空

null_resettable: get方法不能返回为空,set方法可以为空。(例:控制器view)
注意:null_resettable 必须重写get方法或者set方法,处理传递的值为空的情况。
_Null_unspecified或者 __null_unspecified: 不确定是否为空
注意 :有下划线的 只能写在属性前边

NS_ASUME_NONNULL_BEGIN 和 NS_ASSUME_NONNULL_END 之间定义的所有的对象属性和方法默认都是nonnull(非空)

泛型:限制类型
泛型使用场景:在类型后面定义泛型 没有的确定泛型就是id类型
1)、在集合(数组,字典,NSSet)中使用泛型比较常见(例:NSMutableArray<NSString *> *datas)
2)、当声明一个类,类里面的某些属性的类型不确定,这时候我们才使用泛型。(类名后<ObjectType>冒号继承类前)
泛型修饰:只能修饰方法的调用
泛型好处:
1)、提高开发规范,减少程序员之间的交流
2)、通过集合取出来对像,直接当泛型对象使用,可以直接使用点语法

__covariant: 协变 修饰泛型(例:<__covariant ObjectType>), 用于泛型数据强转类型,可以向上强转,子类可以转变成父类(例:子类对象给父类对象赋值)
__contravariant: 逆变 修饰泛型(例:< __contravariant ObjectType>)用于泛型数据强转类型,可以向下强转,父类可以转变成子类(例:父类对象给子类对象赋值)

__Kindof和id、instancetype 的优缺点:
1、__Kindof:修饰类 表示当前类或者他的子类。(例:__kindof 类名 *) 用法:方法的返回值里面去用。在调用时能清楚的知道返回类型
2、id的坏处:1)、不能在编译时检查真实类型
2)、返回值没有提示
3、instancetype 自动识别当前对象的类 但是返回还是没有提示

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,906评论 18 399
  • 索引 关键字1.1 id1.2 instancetype1.3 __kindof1.4 nullable1.5 n...
    李国安阅读 3,959评论 4 3
  • 1. 熟悉Git的基本流程 git clone git add -A git commit -m " " git ...
    9bf19a4010ab阅读 5,630评论 0 2
  • 装文艺,爱装逼是我的毛病。 爱逃避,过得仙儿,不愿面对现实生活我也知道。 自从,应该不是我主观能够控制的,就这么发...
    方岩阅读 3,097评论 0 0
  • 周四,晴,暮春夏初,和风,有时热。 新的一个月。 现在体重64.0。 这边的长江不是东西向,看不到日出,适合看日落...
    蘑菇菌阅读 1,072评论 0 1