NS_ASSUME_NONNULL_BEGIN
& NS_ASSUME_NONNULL_END
从表面意思来看,NS设定不可为空开始 & NS设定不可为空结束
苹果提供的两个宏,方便我们在定义属性的时候将不可为空的属性都写在 “NS设定不可为空开始” 和 “NS设定不可为空结束”之间,默认写在这之间的属性是不可为空的。
在Xcode升级到10.0 beta4版本后,创建类时系统自动会添加这两个宏:
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface Person : NSObject
@property (nonatomic, copy) NSString *name;
@property (nullable ,nonatomic, copy) NSString *age;
@end
NS_ASSUME_NONNULL_END
其中NS_ASSUME_NONNULL_BEGIN 和 NS_ASSUME_NONNULL_END在Xcode10.0 beat4版本自动添加。
name
不可为空
age
可为空
创建person对象,给属性赋值:
Person *p = [[Person alloc] init];
p.name = nil;
p.age = nil;
给name给空,系统会提醒: