zoukankan      html  css  js  c++  java
  • iOS9的几个新关键字(nonnull、nullable、null_resettable、__null_unspecified)

    1、nonnull:字面意思就能知道:不能为空(用来修饰属性,或者方法的参数,方法的返回值)

    代码:

     1 //三种使用方式都可以
     2 @property (nonatomic, copy, nonnull) NSString *name;
     3 
     4 @property (nonatomic, copy) NSString * _Nonnull name;
     5 
     6 @property (nonatomic, copy) NSString * __nonnull name;
     7 
     8 //补充(不适用于assign属性,因为它是专门用来修饰指针的)
     9 @property (nonatomic, assign) NSUInteger age;
    10 
    11 //补充(用下面宏包裹起来的属性全部都具nonnull特征,当然,如果其中某个属性你不希望有这个特征,也可以自己定义,比如加个nullable)
    12 //在NS_ASSUME_NONNULL_BEGIN和NS_ASSUME_NONNULL_END之间,定义的所有对象属性和方法默认都是nonnull
    1 //也可以在定义方法的时候使用
    2 //返回值和参数都不能为空
    3 - (nonnull NSString *)test:(nonnull NSString *)name;
    4 //同上
    5 - (NSString * _Nonnull)test1:(NSString * _Nonnull)name;

     这样,你在使用以上方法的时候会出现这种效果提示

    同样,使用属性的时候:

    2、nullable:表示可以为空(使用方法和上面几乎一样,但是没有发现和上面类似的宏)

    代码(大概看一下,参考上面就行了):

    1 //三种使用方式
    2 // 方式一:
    3 @property (nonatomic, copy, nullable) NSString *name;
    4 // 方式二:
    5 @property (nonatomic, copy) NSString *_Nullable name;
    6 // 方式三:
    7 @property (nonatomic, copy) NSString *__nullable name;

    效果:

    这样,当在使用这个属性的时候,Xcode的代码提示会告诉你这个属性是可以为空的,算是一种编程规范吧,减少程序员之间的交流。

     3、null_resettable: get:不能返回空, set可以为空(注意:如果使用null_resettable,必须 重写get方法或者set方法,处理传递的值为空的情况)

     // 书写方式:

     1 @property (nonatomic, copy, null_resettable) NSString *name; 

    设置一下set或get方法

     1 - (void)setName:(NSString *)name
     2 {
     3     if (name == nil) {
     4         name = @"我叫畅敏";
     5     }
     6     _name = name;
     7 }
     8 - (NSString *)name
     9 {
    10     if (_name == nil) {
    11         _name = @"我叫畅敏";
    12     }
    13     return _name;
    14 }

    4、_Null_unspecified:不确定是否为空

    使用方式只有这两种:

    1 @property (nonatomic, strong) NSString *_Null_unspecified name;

    1 @property (nonatomic, strong) NSString *__null_unspecified name; 

     

    总结:我理解这些东西主要就是为了提高开发规范,提示使用的人应该传什么样的值,如果违反了对规范值的要求,就会有警告;

     

  • 相关阅读:
    HDOJ 1846 Brave Game
    并查集模板
    HDU 2102 A计划
    POJ 1426 Find The Multiple
    POJ 3278 Catch That Cow
    POJ 1321 棋盘问题
    CF 999 C.Alphabetic Removals
    CF 999 B. Reversing Encryption
    string的基础用法
    51nod 1267 4个数和为0
  • 原文地址:https://www.cnblogs.com/alan12138/p/5620021.html
Copyright © 2011-2022 走看看