iOS9新关键字

nullable:可以为空    nonnull:非空

用来修饰属性,方法的参数,方法的返回值。

优点:提高开发规范,减少team之间不必要的交流。

注意点:只能修饰对象,不能修饰基本数据类型。


用法一: 修饰属性

方式一: @property (copy,nonatomic,nullable)NSString *name; 

方式二: @property (copy,nonatomic)NSString * _Nullable name; 

方式三: @property (copy,nonatomic)NSString * __nullable name; 

方式一: @property (copy,nonatomic,nonnull)NSString *name; 

方式二: @property (copy,nonatomic)NSString * _Nonnull name; 

方式三: @property (copy,nonatomic)NSString * __nonnull name; 


用法二:方法中使用

修饰方法参数和返回值

 - (nonnull NSString *)test:(nonnull NSString *)str;

 - (NSString * _Nonnull)test:(NSString * _Nonnull)str; 


新出的宏

1, 在NS_ASSUME_NONNULL_BEGIN 和NS_ASSUME_NONNULL_END之间,定义的所有对象属性和方法默认都是nonnull。

2,null_resettable  修饰属性 意思是:set方法可以为空,get方法不能为空。 注意:使用该关键字,必须重写set或者get方法。

3,_Null_unspecified:不确定是否为空,没有应用价值。 __null_unspecified


泛型

作用:限制类型。    

使用场景:1,在集合中比较常用。            

                   2,当声明一个类,类里面的某些属性的类型不确定,这时可以使用泛型。    

优点:1,提高开发规范,减少team之间不必要的交流。        

           2,从集合中取出来直接使用,不用向下转型。    


__kindof

表示当前类或者它子类。

如果方法的返回值类型使用了该关键字修饰的话,那么既可以使用当前类的指针变量接收,也可以使用子类的指针变量接收。

@interface Person : NSObject

// __kindof Person *:表示可以是Person类或者它的子类

+ (__kindof Person *)person;

@end

@implementation ViewController

Person *p = [Person person];//既可以Person类型接收

SonPerson *pp = [Person person];//也可以Person的子类SonPerson类型接收

}

@end

你可能感兴趣的:(iOS9新关键字)