iOS9新出的关键字:用来修饰属性,或者方法的参数,方法的返回值
好处:
1.迎合swift
2.提高我们开发人员开发规范,减少程序员之间交流
- nullable 和 nonnulla
注意:OS9新出关键字nonnull,nullable只能修饰对象,不能修饰基本数据类型
nullable作用:表示可以为空
nonnull: 表示不能为空
在 NS_ASSUME_NONNULL_BEGIN 和NS_ASSUME_NONNULL_END 之间,定义的所有对象属性和方法都默认是nonnull,只有在想定义可以空的的个别对象属性,才加上去
例如:
@property (copy, nonatomic,nullable) NSString *name;
@property (copy, nonatomic, nonnull) NSString *name2;
- null_resettable
null_resettable :get 方法不能为空,set方法可以为空
注意;如果使用null_resettable,必须 重写get方法或者set方法,处理传递的值为空的情况
例如:
@property (copy, nonatomic, null_resettable) NSString *name4;
- (NSString *)name4
{
if (_name4 == nil) {
_name4 = @"abc";
}
return _name4;
}
- 泛型
泛型:限制类型
泛型使用场景:
1.在集合(数组,字典,NSSet)中使用泛型比较常见.
2.当声明一个类,类里面的某些属性的类型不确定,这时候我们才使用泛型.
泛型书写规范
在类型后面定义泛型,NSMutableArray *datas
泛型修饰:
只能修饰方法的调用.
泛型好处:
1.提高开发规范,减少程序员之间交流
2.通过集合取出来对象,直接当做泛型对象使用,可以直接使用点语法
例如:
@property (strong, nonatomic) NSMutableArray *dataArray;
表示能dataArray 里面存储的数据存储的 NSString 类型
- __kindof
__kindof:表示当前类或者它子类
__kindof书写格式:
放在类型前面,表示修饰这个类型(__kindof Person *)
__kindof :在调用的时候,很清楚的知道返回类型
例如:
- (nullable __kindof UITableViewCell *)dequeueReusableCellWithIdentifier:(NSString *)identifier;