首页 > 代码库 > nullable,nonnull, null_resettable以及_Null_unspecified的区别和使用

nullable,nonnull, null_resettable以及_Null_unspecified的区别和使用

1.关键字:可以用于属性 方法和返回值参数中

关键字作用:提示作用  告诉开发者属性信息

关键字的目的:迎合swift 强语言,swift必须要指定一个对象是否为空

关键字好处:提高代码规划,减少沟通成本

仅仅是提供警告并不会报编译错误

 

nullabel作用 :提示可能为空

 

语法 1

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

 

语法 2

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

 

语法 2

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

 

 

nonnull作用 :提示不能为空

 

语法 1

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

 

语法 2

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

 

语法 2

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

 

 

 

 

 

null_resettable 作用:必须要处理为空的情况  get不能返回nil  set方法可以传入为空

 

重写get方法

 

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

 

不可以用语法2 写法  会报错

 

 

 

_Null_unspecified : 不确定是否为空

 

很少使用

 

 

 

—————————

 

!_view  改为  _view = nil  因为swift不支持前者

 

补充 在宏(NS_ASSUME_NONULL_BEGIN /END)之间默认是nonnull   strong

 

关键字不能用于基本数据类型

 

************************************************************************************

 

2.泛型

 

为什么要退出泛型?迎合swift

泛型好处:1.限制类型  2.提高代码规范 减少沟通成本

泛型用法:类型<限制类型>

 

泛型仅仅是报警告

 

泛型好处  从数组中取出来可以使用点语法

给数组添加元素有提示

 

泛型在开发中的使用场景:1.用于限制集合类型

 

nullable,nonnull, null_resettable以及_Null_unspecified的区别和使用