美文网首页
iOS9新关键字

iOS9新关键字

作者: 献国 | 来源:发表于2017-08-31 13:35 被阅读0次

    nullable:可以为空    nonnull:非空

    用来修饰属性,方法的参数,方法的返回值。

    优点:提高开发规范,减少team之间不必要的交流。

    注意点:只能修饰对象,不能修饰基本数据类型。


    用法一: 修饰属性

    方式一: @property (copy,nonatomic,nullable)NSString *name; 

    方式二: @property (copy,nonatomic)NSString * _Nullable name; 

    方式三: @property (copy,nonatomic)NSString * __nullable name; 

    方式一: @property (copy,nonatomic,nonnull)NSString *name; 

    方式二: @property (copy,nonatomic)NSString * _Nonnull name; 

    方式三: @property (copy,nonatomic)NSString * __nonnull name; 


    用法二:方法中使用

    修饰方法参数和返回值

     - (nonnull NSString *)test:(nonnull NSString *)str;

     - (NSString * _Nonnull)test:(NSString * _Nonnull)str; 


    新出的宏

    1, 在NS_ASSUME_NONNULL_BEGIN 和NS_ASSUME_NONNULL_END之间,定义的所有对象属性和方法默认都是nonnull。

    2,null_resettable  修饰属性 意思是:set方法可以为空,get方法不能为空。 注意:使用该关键字,必须重写set或者get方法。

    3,_Null_unspecified:不确定是否为空,没有应用价值。 __null_unspecified


    泛型

    作用:限制类型。    

    使用场景:1,在集合中比较常用。            

                       2,当声明一个类,类里面的某些属性的类型不确定,这时可以使用泛型。    

    优点:1,提高开发规范,减少team之间不必要的交流。        

               2,从集合中取出来直接使用,不用向下转型。    


    __kindof

    表示当前类或者它子类。

    如果方法的返回值类型使用了该关键字修饰的话,那么既可以使用当前类的指针变量接收,也可以使用子类的指针变量接收。

    @interface Person : NSObject

    // __kindof Person *:表示可以是Person类或者它的子类

    + (__kindof Person *)person;

    @end

    @implementation ViewController

    Person *p = [Person person];//既可以Person类型接收

    SonPerson *pp = [Person person];//也可以Person的子类SonPerson类型接收

    }

    @end

    相关文章

      网友评论

          本文标题:iOS9新关键字

          本文链接:https://www.haomeiwen.com/subject/lnrqjxtx.html