IOS9新特性之关键字该怎么学

👉iOS9新特性之常见关键字
 
    iOS9出了很多关键字,研究下苹果为什么要新推出关键字.
    研究方法:在新版本的Xcode创建一个空的项目,在老版本的Xcode打开,发现很多错误
    研究新的东西:两点(1.怎么去用(书写格式) 2.关键字有什么作用)
    关键字作用:仅仅是提示,并不会报编译错误.
   
    关键字开发好处:
                1.提高代码规范,减少交流时间,把更多精力放在开发中.
                2.迎合swift,swift强引用,必须指定这个属性是否为空.
    iOS9:Xcode7
    iOS8:Xcode6
    iOS7:Xcode5
    iOS6:Xcode4 2013 6月份 Xcode4.6
 
    注意:
    1.关键字只能用来描述对象,不能描述基本数据类型(int等等)
 
    2.默认系统如果没有使用关键字,默认(对象属性)就是nonnull
 
    3.在NS_ASSUME_NONNULL_BEGIN和NS_ASSUME_NONNULL_END之间,系统对象默认就是nonnull
 
------------------------------------------------------------------
 
    nullable作用:可能为空,表示属性可以传入空,在访问属性和调用方法都会提示
       nonnull作用:不能为空
       null_resettable作用:声明属性:get 方法不能为空, set 方法可以为空
       注意:
    null_resettable:处理为空的情况
    _Null_unspecified作用:不确定
 
    研究方法:⬇️以nullable为例
    格式(模仿):
    1.方式一:(策略)
    @property (nonatomic, strong, nullable) NSString *name;
 
    2.方式二:_Nullable(*后面,变量名前面)
    @property (nonatomic, strong) NSString * _Nullable name;
 
    3.方式三:__nullable(*后面,变量名前面),xcode7beta(测试版本)
    @property (nonatomic, strong) NSString * __nullable name;
 
👉iOS9新特性之泛型
 
      苹果为什么推出泛型:
 
    泛型好处:
            1.迎合swift
            2.提高代码规范,一看便知是什么类型
 
    泛型作用:
            1.限制类型(主要是限制集合中是什么类型)
            2.从集合中取出来,可以使用点语法,不使用泛型,不能使用点语法.
 
 
    泛型格式:
    声明泛型格式: 在声明类型的后面<类型>
    定义泛型格式: 在使用类型后面<类型>
 
 
    注意点:泛型仅仅报警告,并不是编译错误.
   
          数组里不能传入nil,真的会报错(运行).
 
    疑问:为什么集合可以使用泛型.
    并不是任何系统类型,都可以使用泛型,一般是集合(NSSet,字典,数组)
 
    字典使用泛型格式:NSDictionary<NSString *,id>
 
    泛型开发中使用场景(需求):声明类的时候不确定,使用类型创建对象才确定,就可以使用泛型
 
    比如有个人,在声明这个Person类,并不知道会哪些编程语言(iOS,Java),在创建这个人类的时候,才确定他会什么.
 
    自定义泛型?在声明自定义类的时候,声明泛型,在使用自定义类的时候,定义泛型
 
         声明泛型:<泛型名称>
     定义泛型:<什么类型>
     这个泛型就可以充当一个类型使用
     __covariant:    协变: 子类转父类
     __contravariant 逆变: 父类转子类
     用于类型转换
 
       观察 -> 总结
    __kindof用法:用于返回值,在类型前面声明
    __kindof作用:相当于,描述当前类或者子类
   
  
posted @ 2016-01-20 20:39  coyoko  阅读(176)  评论(0编辑  收藏  举报