美文网首页
iOS 新特性关键字

iOS 新特性关键字

作者: 宁梓茞 | 来源:发表于2018-01-28 16:33 被阅读0次

    1.用来修饰属性,或者方法的参数,方法的返回值

    /**

    nullable:表示可以传空

    */

    //@property (nonatomic, strong, nullable) NSString *name;

    //@property (nonatomic, strong) NSString * __nullable name;

    //@property (nonatomic, strong) NSString * _Nullable name;

    /**

    nonnull: non:非 null : 空

    */

    //@property (nonatomic, strong, nonnull) NSString *icon;

    //@property (nonatomic, strong) NSString * __nonnull icon;

    //@property (nonatomic, strong) NSString * _Nonnull icon;

    //方法中书写规范

    /**

    • (nullable NSString *)test:(NSString *_Nullable)test;

    • (nonnull NSString *)test1:(NSString *_Nonnull)test1;

    */

    /**

    //在 NS_ASSUME_NONNULL_BEGIN 和 NS_ASSUME_NONNULL_END 之间定义的所有属性和方法默认都是 nonnull

    NS_ASSUME_NONNULL_BEGIN

    @property (nonatomic) NSString *name;//这样默认表示非空

    NS_ASSUME_NONNULL_END

    */

    /**

    • null_resettable :get方法返回值不能为空 set方法可以为空

    • 如果使用了这种方法必须重写 set 方法或者重写 get 方法处理传递值为空的情况

    */

    @property (nonatomic, strong, null_resettable) NSString *name;

    /**

    • null_unspecified: 不确定为空

    */

    @property (nonatomic, strong, null_unspecified) NSString *name;

    好处:

    1.迎合 swift

    2.提高我们开发人员开发规范,减少程序按之间交流

    //注意 iOS9新出关键字 nonnull, nullable 只能修饰对象,不能修饰基本数据类型

    2.iOS9 泛型

    /**
    
     泛型:限制类型
    
     泛型使用场景
    
     1.在集合(数组, 字典, NSSet)中使用比较常见
    
     2.当声明一个类,类里面的某些属性的类型不确定,这时候我们才使用泛型
    
     
    
     
    
     泛型书写规范
    
     @property (nonatomic, strong) NSMutableArray<NSString *> *data;
    
     在类型的后面定义泛型 NSMutableArray<NSString *> *data;
    
    
    
     泛型修饰:只能修饰方法的调用
    
     泛型好处:
    
     1.提高开发规范,减少程序之间交流
    
     2.通过集合取出来对象,直接当做泛型对象使用,可以使用点语法
    
     */
    

    __kindof
    /**

     * __kindof:表示当前类或者它子类
    
     * __kindof书写格式
    
     * 放在类型前面修饰这个类型
    
     +(__kindof person *)person;
    
     __kindof : 在调用的时候很清楚的知道返回的类
    
     */
    
    
    
    /**
    
     * id 坏处: 1. 不能再编译的时候检查真是类型
    
     *          2.返回值,没有提示
    
       instancetype: 会自动识别当前对象的类,但是返回值还是没有提示
    
     */

    相关文章

      网友评论

          本文标题:iOS 新特性关键字

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