1,nonnull和nullable
声明属性是否可以为nil,如果对nonnull属性赋值为nil,则会报警告。
1
2
3
@property (nonatomic, strong, nonnull) NSArray *array1;

@property (nonatomic, strong) NSArray * __nullable array2;

作用主要是开发者之间交互,调用属性时可以知道这个属性是可能为nil的,针对这个状态做些处理。
默认情况下就是nullable状态。
可以用来给方法的参数最要求,比如定一个方法,参数为一个不为空的对象:
2,null_resettable
声明属性set方法可以为nil,但是get一定不能为nil,这里有一个貌似冲突的地方,就是可以定义个属性为nil,但是在获取这个属性的时候,这个属性不能为nil,否则会有警告。
这里用到的地方例如在UIViewController中的view,意味着开发者可以对控制器的view清空赋值为nil,但是控制器view是懒加载的,每次获取控制器的view时候,都可以再获取到非nil的view。
一个Objective-C的新特性:nullability annotations。这一新特性的核心是两个新的类型注释:__nullable和__nonnull。从字面上我们可以猜到,__nullable表示对象可以是NULL或nil,而__nonnull表示对象不应该为空。当我们不遵循这一规则时,编译器就会给出警告。
不过这只是一个警告,程序还是能编译通过并运行。
事实上,在任何可以使用const关键字的地方都可以使用__nullable和__nonnull,不过这两个关键字仅限于使用在指针类型上。而在方法的声明中,我们还可以使用不带下划线的nullable和nonnull

nonnull和nullable相关推荐

  1. iOS新增关键字 nonnull、nullable等相关

    1,nonnull和nullable 声明属性是否可以为nil,如果对nonnull属性赋值为nil,则会报警告. 1 2 3 @property (nonatomic, strong, nonnul ...

  2. android @nonnull的作用,@NonNull和@Nullable注释 – 它会影响Android的性能吗?

    @NonNull和@Nullable注释会在运行时影响Android的性能吗?我的意思是他们只有支持LINT和其他工具来检测可能的错误的目的,所以他们可能/希望在编译期间被忽略.你有什么资料来证明这一 ...

  3. 安卓中的NonNull和Nullable及遇到的问题

    使用Android Studio继承接口实现方法的时候经常会看到 NonNull和Nullable两个注解 @androidx.annotation.Nullable @androidx.annota ...

  4. iOS9的几个新关键字(nonnull、nullable、null_resettable、__null_unspecified)

    1.nonnull:字面意思就能知道:不能为空(用来修饰属性,或者方法的参数,方法的返回值) 代码: 1 //三种使用方式都可以 2 @property (nonatomic, copy, nonnu ...

  5. java中的nullable_java – @NonNull和@Nullable的正确用法是什么?

    我对这些注释的正确使用感到困惑. android.support.annotation.NonNull; android.support.annotation.Nullable; @NonNull文档 ...

  6. java 使用nullable_java – @NonNull和@Nullable的正确用法是什么?

    我对这些注释的正确使用感到困惑. android.support.annotation.NonNull; android.support.annotation.Nullable; @NonNull文档 ...

  7. iOS几个关键字(nonnull、nullable、null_resettable、__null_unspecified)

    1.nonnull:字面意思就能知道:不能为空(用来修饰属性,或者方法的参数,方法的返回值) 代码: // 三种使用方式都可以@property (nonatomic, copy, nonnull) ...

  8. @NotNull :@NotEmpty @NotBlank :@NonNull:@Nullable 的区别

    @NotNull : 用在基本类 型上 不能为null 但可以为空字符串 @NotEmpty : 用在集合类上 不能为空 并且长度必须大于0 @NotBlank : 只能作用在String上,不能为n ...

  9. Spring注解@NonNull作用 Spring注解@Nullable作用 Spring NonNull 注解作用 Spring Nullable注解作用

    Spring注解@NonNull作用 Spring注解@Nullable作用 Spring NonNull 注解作用 Spring Nullable注解作用 一.概述 在看Spring源码的时候,经常 ...

最新文章

  1. 【独家】深入浅出话AI:定义和主要研究方法
  2. pytorch使用empty跟内建函数random_进行初始化Tensor
  3. python怎么打开交互式窗口-在交互式环境中执行Python程序过程详解
  4. codeforces 667B B. Coat of Anticubism(水题)
  5. rust python对比_Python Rust 迭代器对比
  6. RocketMq发送延迟消息
  7. 邮件安全上市公司 Mimecast 的部分源代码被 SolarWinds 黑客盗走
  8. 为什么git的“ pull request”不称为“ push request”?
  9. win7下 安装mysql数据库_mysql-windows系统安装mysql数据库
  10. 如何购买微软的wince 等授权组件等?(找到了!)
  11. 常见物理性能测试仪器设备档案
  12. 深度linux deepin15.2,从其它Deepin版本升级到深度Deepin 15.11操作系统的方法
  13. 【U8+】U8+自动备份不成功BackupDB日志中显示“数据源.未找到”
  14. 如何修改linux其它用户ulimit,Linux系统设置–ulimit
  15. 网易互联网(网易严选)测试开发工程师
  16. HDU-2544 最短路【最短路】
  17. C/C++黑魔法-常量字符串连接
  18. 龙光城的洋房和惠州的花园
  19. Android源代码结构
  20. Microsoft Visual Studio 2017 Installer Projects 生成打包文件

热门文章

  1. 解决pycharm lanms包错误 “No module named lanms”
  2. Python编程基础——序列:字符串、列表和元组
  3. DELL PowerEdge R620 U盘启动
  4. 小米路由器3安装opkg指南
  5. Easyu问题解决记录——datagrid多选bug
  6. php 安装zip,php7.4安装zip扩展
  7. Springboot毕设项目生鲜超市管理的设计与实现dvzk6java+VUE+Mybatis+Maven+Mysql+sprnig)
  8. 3D建模培训学习内容和学习方法盘点
  9. linkage pathways
  10. 玩游戏学c语言(一)EasyX图像库安装